win32网络编程实例——同步IO
2016-11-07 13:18
381 查看
服务器端代码:
客户端代码:
<span style="font-size:12px;">#include <winsock2.h> #include <stdio.h> #pragma comment(lib, "wsock32.lib") int main() { int iResults; WSADATA wsaData; SOCKET listenSocket; SOCKET acceptSocket; struct sockaddr_in serverAddr; char recvbuf[1024] ={0}; iResults = WSAStartup(MAKEWORD(2,2),&wsaData); if(iResults != NO_ERROR) { printf("WSAStartup error:%d\n",iResults); WSACleanup(); return -1; } listenSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(listenSocket == INVALID_SOCKET) { printf("socket error:%d\n",WSAGetLastError()); WSACleanup();; closesocket(listenSocket); return -1; } serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(27015); iResults = bind(listenSocket,(SOCKADDR *)&serverAddr,sizeof(serverAddr)); if(iResults == SOCKET_ERROR) { printf("bind error:%d\n",WSAGetLastError()); WSACleanup(); closesocket(listenSocket); return -1; } iResults = listen(listenSocket,SOMAXCONN ); if(iResults == SOCKET_ERROR) { printf("listen error:%d\n",WSAGetLastError()); WSACleanup(); closesocket(listenSocket); return -1; } acceptSocket = accept(listenSocket,NULL,NULL); if(acceptSocket == INVALID_SOCKET) { printf("accept error:%d\n",WSAGetLastError()); WSACleanup(); closesocket(listenSocket); closesocket(acceptSocket); return -1; } printf("connect is establisted!\n"); do{ iResults = recv(acceptSocket,recvbuf,sizeof(recvbuf),0); if(iResults > 0) printf("recv num is %d, recvbuf is %s\n",iResults,recvbuf); else if(iResults == 0) printf("Connection closed\n"); else printf("recv error:%d\n",WSAGetLastError()); }while(iResults < 0); closesocket(listenSocket); WSACleanup(); return 0; } </span>
客户端代码:
<span style="font-size:12px;">#include <winsock2.h> #include <stdio.h> #pragma comment(lib, "wsock32.lib") int main() { int iResults; unsigned int numSend; unsigned int pSend; WSADATA wsaData; SOCKET connectSocket; struct sockaddr_in serverAddr; char sendbuf[1024] = "HelloWorld!"; iResults = WSAStartup(MAKEWORD(2,2),&wsaData); if(iResults != NO_ERROR) { printf("WSAStartup error:%d\n",iResults); WSACleanup(); return -1; } connectSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(connectSocket == INVALID_SOCKET) { printf("socket error:%d\n",WSAGetLastError()); WSACleanup(); closesocket(connectSocket); return -1; } serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(27015); iResults = connect(connectSocket,(SOCKADDR *)&serverAddr,sizeof(serverAddr)); if(iResults == SOCKET_ERROR) { printf("connect error:%d\n",WSAGetLastError()); WSACleanup(); closesocket(connectSocket); return -1; } numSend = 0; pSend = 0; do{ numSend = send(connectSocket ,sendbuf + pSend ,strlen(sendbuf) - pSend ,0); if(numSend == SOCKET_ERROR) { printf("send error:%d\n",WSAGetLastError()); WSACleanup(); } pSend = pSend + numSend; }while(pSend < (int)strlen(sendbuf));//not <= closesocket(connectSocket); WSACleanup(); return 0; }</span>
相关文章推荐
- win32网络编程实例——重叠IO
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- JAVA基础知识之网络编程——-关于阻塞IO/非阻塞IO/同步IO/异步IO的一些参考文章
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- [网络编程]Win32 Socket+OpenSSL实例
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- 11 Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- 网络编程io总结区分。阻塞,非阻塞,异步,同步
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java网络编程 - 同步阻塞IO模型
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- 网络编程基础(1) : 网路模型简介+同步阻塞实例
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)