windows socket 数据交互
发布时间:2020-12-14 06:00:36 所属栏目:Windows 来源:网络整理
导读:client // ip地址 端口 SOCKET init( const char * IP,u_short port) { WSADATA wd; int ret = WSAStartup(MAKEWORD( 2 , 2 ), wd); if (ret != 0 ) { cout " WSAStartup error ... " endl; return INVALID_SOCKET; } cout " WSAStartup success ... " endl;
client //ip地址 端口 SOCKET init(const char *IP,u_short port) { WSADATA wd; int ret = WSAStartup(MAKEWORD(2,2),&wd); if (ret != 0) { cout << "WSAStartup error ..." << endl; return INVALID_SOCKET; } cout << "WSAStartup success ..." << endl; //创建套接字 SOCKET skt = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (skt == SOCKET_ERROR) { cout << "socket error ..." << endl; return INVALID_SOCKET; } cout << "socket success ..." << endl; //服务端信息 sockaddr_in addrServ; addrServ.sin_family = AF_INET;//IPV4协议 addrServ.sin_port = htons(port);//端口 addrServ.sin_addr.s_addr = inet_addr(IP);//IP地址 //连接服务器 if (connect(skt,(sockaddr *)&addrServ,sizeof(addrServ)) == SOCKET_ERROR) { cout << "connect error ..." << endl; return -1; } cout << "connect success ..." << endl; return skt; } void destroy(SOCKET skt) { closesocket(skt); WSACleanup(); } void printMenu() { printf("*************************n"); printf("*getName *n"); printf("*getAge *n"); printf("*exit *n"); printf("*************************n"); } //socket客户端代码 客户端发送命令 接受服务器发送的消息 int function06() { SOCKET sktCli = init("192.168.3.18",8080); if (sktCli == INVALID_SOCKET) { return -1; } while (true) { printMenu(); char szCmd[64] = {0}; scanf("%s",szCmd); if (strcmp(szCmd,"exit") == 0) { printf("[client] exit ...n"); break; } send(sktCli,szCmd,strlen(szCmd)+1,0); char szRecv[1024] = {0}; int ret = recv(sktCli,szRecv,sizeof(szRecv),0); if (ret <= 0) { printf("[client] server exit ...n"); break; } printf("[server] msg:%sn",szRecv); } destroy(sktCli); return 0; } server //初始化 SOCKET init(const char *IP,&wd); if (ret != 0) { cout << "WSAStartup error ..." << endl; return -1; } cout << "WSAStartup success ..." << endl; //创建套接字 SOCKET skt = socket(AF_INET,IPPROTO_TCP); if (skt == INVALID_SOCKET) { cout << "socket error ..." << endl; return -1; } cout << "socket success ..." << endl; //服务器信息 sockaddr_in addrServ; addrServ.sin_family = AF_INET; addrServ.sin_port = htons(port); addrServ.sin_addr.s_addr = inet_addr(IP); //套接字绑定端口和ip if (bind(skt,sizeof(addrServ)) == SOCKET_ERROR) { cout << "bind error ..." << endl; return -1; } cout << "bind success ..." << endl; //开始监听套接字 if (listen(skt,SOMAXCONN) == SOCKET_ERROR) { cout << "listen error ..." << endl; return -1; } cout << "listen success ..." << endl; return skt; } void destroy(SOCKET skt) { closesocket(skt); WSACleanup(); } //接受客户端发送的命令 发送消息给客户端 int function06() { SOCKET sktServ = init("0.0.0.0",8080); if (sktServ == INVALID_SOCKET) { return -1; } SOCKET sktCli = accept(sktServ,NULL,NULL); while (true) { char szCmd[64] = {0}; int ret = recv(sktCli,sizeof(szCmd),0); if (ret == SOCKET_ERROR) { printf("[server] recv error ...n"); break; } if (ret == 0) { printf("[client] exit ...n"); break; } printf("[client] %sn",szCmd); char szMsg[1024]; if (strcmp(szCmd,"getName") == 0) { sprintf(szMsg,"%s","爱白菜的小昆虫."); } else if (strcmp(szCmd,"getAge") == 0) { sprintf(szMsg,"1000."); } else { sprintf(szMsg,"???."); } send(sktCli,szMsg,strlen(szMsg)+1,0); } destroy(sktServ); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在Windows上的Visual Studio代码中调试C#代码
- selenium – Microsoft Edge清洁会话
- windows-phone-8 – 在c#crashing应用程序中的facebook log
- Windows Phone 7 – 可以在Silverlight中使用其相机吗?
- WPF:在MVVM中管理Windows(打开,关闭等)?
- 如何在Firebird Embedded中访问UDF DLL?
- Grails 2.0.3错误从Windows7中的命令行开始
- 如何评估在Windows机器上运行的perl
- Windows 2008 R2域用户无法更改键盘布局
- windows – 如何检查多个用户是否使用网络共享EXE文件?
推荐文章
站长推荐
- windows – 将’open’传递给ShellExecute不会在
- Windows – LDAP上的DC的第三方通配符证书
- windows查看网络常用cmd命令
- windows下搭建vue开发环境+IIS部署
- https – 如何在非Windows平台上忽略“System.Ne
- windows-server-2008 – 我真的需要Exchange Ser
- WinRT中使用MVVM的选定项目
- windows-phone-8 – 如何在Windows Phone 8真实设
- 如何将windows server 2016 评估版转换为零售版
- windows-7 – 为什么Windows 7兼容模式有Windows
热点阅读