代码开源(4)——Windows 中CS简单实现
2011-08-12 21:28
197 查看
下面两段代码介绍Windows中,TCP/IP的建立过程,只是一个最简单的实现。VS2008中测试通过。
服务器端:
客户端:
服务器端:
#include<winsock.h> #include<stdio.h> #pragma comment(lib,"wsock32.lib") int main() { //请求版本 WORD wVersionRequested; //Window Socket版本 WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); //高位为副版本,请求1.1版本 err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 1; } //找不到合适版本 if(LOBYTE( wsaData.wVersion)!= 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return 1; } //创建套接字socket SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); //创建套接字 SOCKADDR_IN addrSrv; addrSrv.sin_family=AF_INET; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//转换为网络顺序 addrSrv.sin_port=htons(5001); //绑定bind if(bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)) < 0) { printf("bind failed\n"); return 1; } //监听listen listen(sockSrv, 5); SOCKADDR_IN addrClient; while(true) { int len=sizeof(SOCKADDR); char sendBuf[100]; char recvBuf[100]; //用sockConn与客户端通信 SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); sprintf(sendBuf,"Welcome %s to seu",inet_ntoa(addrClient.sin_addr)); send(sockConn, sendBuf, strlen(sendBuf) + 1, 0); recv(sockConn, recvBuf, 100, 0); printf("%s\n", recvBuf); closesocket(sockConn); } return 0; }
客户端:
#include<winsock.h> #include<stdio.h> #pragma comment(lib,"wsock32.lib") int main() { //请求版本 WORD wVersionRequested; //Window Socket版本 WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); //高位为副版本,请求1.1版本 err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 1; } //找不到合适版本 if(LOBYTE( wsaData.wVersion)!= 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return 1; } char ip[] = "127.0.0.1"; int port = 5001; SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0); //创建套接字 SOCKADDR_IN addrSrv; addrSrv.sin_family = AF_INET; //使用因特网 addrSrv.sin_addr.S_un.S_addr = inet_addr(ip); //服务器IP地址 addrSrv.sin_port = htons(port); //服务器端口 if(connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)) < 0) { printf("connect failed\n"); return 1; } char recvBuf[100]; recv(sockClient,recvBuf,100,0); //接受数据 printf("%s\n",recvBuf); //打印收到的数据 send(sockClient, "hello seu!", strlen("hello seu!") + 1, 0); //发送数据 Sleep(5000); closesocket(sockClient); //关闭套接字 WSACleanup(); return 0; }
相关文章推荐
- 代码开源(4)——Windows 中CS简单实现
- Windows下一个简单的日志系统的C代码实现
- 基于visual c++之windows核心编程代码分析(59)实现网络简单代理编程
- 基于visual c++之windows核心编程代码分析(59)实现网络简单代理编程
- 代码开源(3)——UNIX中CS简单实现
- 代码开源(3)——UNIX中CS简单实现
- php分页代码简单实现
- ARM11 paltform驱动代码完成,最简单的测试直接在装载设备中运行,实现秒读
- 用简单的Java代码实现斐波那契数列
- 表单Form元素的一些简单实现代码以注册为例
- tensorflow rnn 最简单实现代码
- [JavaScript] js实现简单的代码运行框
- 100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】
- Github最火开源项目-一行代码实现ofo小黄车的引导界面
- JavaScript实现网页加载进度条代码超简单
- 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.
- JS Map 和 List 的简单实现代码
- php实现zip压缩文件解压缩代码分享(简单易懂)
- Python实现爬取知乎神回复简单爬虫代码分享