网络通信之TCP
2016-08-26 17:18
162 查看
TCP服务端程序
#include <Winsock2.h> //包含了有关socket的函数,还需要连接ws2_32.lib #include <stdio.h> #pragma comment(lib,"Ws2_32.lib") void main() { WORD wVersionRequested; WSADATA wsaData; int err; //socket的版本号 wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return; } SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);//PF_INET也行,TCP方式 //绑定之前,需要一个地址结构体 SOCKADDR_IN addrSrv; //从unsigned long 到 网络字节序 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; //从unsigned short到网络字节序 addrSrv.sin_port=htons(6000); //绑定 绑定到本地地址和端口上 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //监听模式 listen(sockSrv,5);//等待连接的客户数最大是5 //客户端的地址 SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR);//地址的长度 //接受来自客户端的连接请求 SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); while(1) { Sleep(1000); char sendBuf[100]; //返回点分十进制格式的地址inet_ntoa(addrClient.sin_addr) sprintf(sendBuf,"Welcome %s to http://www.sunxin.org", inet_ntoa(addrClient.sin_addr)); //发送给客户端 send(sockConn,sendBuf,strlen(sendBuf)+1,0); //从客户端接受信息 char recvBuf[100]; recv(sockConn,recvBuf,100,0); printf("%s\n",recvBuf); //关闭来自客户端的请求 closesocket(sockConn); } }
TCP客户端程序
#include <Winsock2.h> #include <stdio.h> #pragma comment(lib,"Ws2_32.lib") void main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return; } SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); while(1) { Sleep(1000); char recvBuf[100]; recv(sockClient,recvBuf,100,0); printf("%s\n",recvBuf); send(sockClient,"This is lisi",strlen("This is lisi")+1,0); } //关闭套接字 closesocket(sockClient); //种植对套接字库的使用 WSACleanup(); system("pause"); }
相关文章推荐
- TCP网络通信的简单例子
- 如何应用TCP/IP的套接字开发网络通信应用程序
- socket网络通信(tcp)
- boost::asio::ip::tcp实现网络通信的小例子
- 网络通信编程demo1[Tcp]
- 嵌入式 TCP/IP 协议单片机技术在网络通信中的应用
- TCP网络通信实例--消息的发送与接收
- 基于TCP Socket的简单网络通信
- 网络编程之TCP通信,为什么在Serve端为每个Client端开辟一个单独的线程来处理Client的请求
- 无线网络中传输层通信协议分析与比较(TCP与UDP)
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单TCP Socket 通信
- Linux网络通信实例(TCP和UDP)
- C#网络通信(2)--TCP编程和多线程
- 如何应用TCP/IP的套接字开发网络通信应用程序
- [转]boost::asio::ip::tcp实现网络通信的小例子
- TCP/IP网络重复型服务器通信软件的设计
- TCP/IP网络重复型服务器通信软件设计
- C#网络编程TCP通信的粘包问题讨论
- java学习之路——基于TCP的Socket网络通信实例
- Linux网络通信(二)Socket编写TCP/UDP