欢迎来到天天文库
浏览记录
ID:37786224
大小:23.78 KB
页数:6页
时间:2019-05-31
《网络的Socket数据传输》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。2.3.下面用Socket实现一个windows下的c语言socket通信例子,这里我们客户端传递一个字符串,服务器端进行接收。4.1234567891011121314151617181920212223242526【服务器端】#include "stdafx.h"#inclu
2、de #include #include #define SERVER_PORT 5208 //侦听端口void main(){ WORD wVersionRequested; WSADATA wsaData; int ret, nLeft, length; SOCKET sListen, sServer; //侦听套接字,连接套接字 struct sockaddr_in saServer, saClient; //地址信息
3、 char *ptr;//用于遍历信息的指针 //WinSock初始化 wVersionRequested=MAKEWORD(2, 2); //希望使用的WinSock DLL 的版本 ret=WSAStartup(wVersionRequested, &wsaData); if(ret!=0) { printf("WSAStartup() failed!"); return; } //创建Socket,使用TCP协议 sLi
4、sten=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sListen == INVALID_SOCKET)27282930313233343536373839404142434445464748495051525354555657585960616263646566676869 { WSACleanup(); printf("socket() faild!"); return; } //构建本地地址信息
5、 saServer.sin_family = AF_INET; //地址家族 saServer.sin_port = htons(SERVER_PORT); //注意转化为网络字节序 saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //使用INADDR_ANY 指示任意地址 //绑定 ret = bind(sListen, (struct sockaddr *)&saServer, sizeof(saServer)); if (
6、ret == SOCKET_ERROR) { printf("bind() faild! code:%d", WSAGetLastError()); closesocket(sListen); //关闭套接字 WSACleanup(); return; } //侦听连接请求 ret = listen(sListen, 5); if (ret == SOCKET_ERROR) { printf("listen(
7、) faild! code:%d", WSAGetLastError()); closesocket(sListen); //关闭套接字 return; } printf("Waiting for client connecting!"); printf("Tips: Ctrl+c to quit!"); //阻塞等待接受客户端连接 while(1)//循环监听客户端,永远不停止,所以,在本项目中,我们没有心跳包。 { length = sizeof(
8、saClient); sServer = accept(sListen, (struct sockaddr *)&saClient, &length); if (sServer == INVALID_SOCKET) { printf("accept() faild! code:%d", WSAGetLa
此文档下载收益归作者所有