windows的socket_tcp服务端与linux的socket_tcp客服端简单通讯
2015-08-01 14:41
686 查看
windows的socket_tcp服务端代码如下:
1、先执行windows上的服务端
2、编译出客服端gcc client.cpp -o client
3、执行 ./client 10.1.1.124
4、发一串字符串过去,windows上的server端接收到数据。over......
#include <stdio.h> #include <Winsock2.h> #pragma comment(lib,"ws2_32") #include <windows.h> int 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(1234); connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); send(sockClient,"hello",strlen("hello")+1,0); char recvBuf[50]; recv(sockClient,recvBuf,50,0); printf("%s\n",recvBuf); closesocket(sockClient); WSACleanup(); }linux的socket_tcp客服端代码如下:
#include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #define portnumber 1234 int main(int argc, char *argv[]) { int sockfd; char buffer[1024]; struct sockaddr_in server_addr; struct hostent *host; /* 使用hostname查询host 名字 */ if(argc!=2) { fprintf(stderr,"Usage:%s hostname \a\n",argv[0]); exit(1); } if((host=gethostbyname(argv[1]))==NULL) { fprintf(stderr,"Gethostname error\n"); exit(1); } /* 客户程序开始建立 sockfd描述符 */ if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) // AF_INET:Internet;SOCK_STREAM:TCP { fprintf(stderr,"Socket Error:%s\a\n",strerror(errno)); exit(1); } /* 客户程序填充服务端的资料 */ bzero(&server_addr,sizeof(server_addr)); // 初始化,置0 server_addr.sin_family=AF_INET; // IPV4 server_addr.sin_port=htons(portnumber); // (将本机器上的short数据转化为网络上的short数据)端口号 server_addr.sin_addr=*((struct in_addr *)host->h_addr); // IP地址 /* 客户程序发起连接请求 */ if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1) { fprintf(stderr,"Connect Error:%s\a\n",strerror(errno)); exit(1); } /* 连接成功了 */ printf("Please input char:\n"); /* 发送数据 */ fgets(buffer,1024,stdin); write(sockfd,buffer,strlen(buffer)); /* 结束通讯 */ close(sockfd); exit(0); }
1、先执行windows上的服务端
2、编译出客服端gcc client.cpp -o client
3、执行 ./client 10.1.1.124
4、发一串字符串过去,windows上的server端接收到数据。over......
相关文章推荐
- HTTP 服务器程序
- 【网页访问单向、双向验证均可以】https原理及tomcat配置https方法[生成CA根证书配置tomcat后,若要成功访问axis中的webservice,需要配置它对应的axis2.xml文件]
- CNN卷积神经网络推导和实现
- Cocos2d-x 3.2 项目源代码从Mac打包到安卓教程【转自:http://www.2cto.com/kf/201410/342649.html】
- Tomcat6 配置HTTPS SSL 发布Axis2 webservice(一)配置【windows中操作,linux中类似此操作】
- C#:this索引器《转载http://www.cnblogs.com/ArmyShen/archive/2012/08/27/2659405.html》
- http://blog.sina.com.cn/s/blog_4aae007d0100inxi.html
- Servlet之Http协议【入门版,初学者必看】
- 常见的HTTP状态码汇总
- Ubuntu 14.04.2 系统无线网络不稳定问题
- 常见HTTP状态(304,200等)
- POJ1087(网络流,二分图匹配)
- 解决Android Studio Import Sample网络连接失败问题
- HTTP 方法:GET 对比 POST
- http各种状态码详解
- 计算机网络读书笔记-----应用层
- 计算机网络读书笔记-----UDP vs TCP
- java网络编程(4)——udp实现聊天
- 计算机网络读书笔记-----传输层
- TCP通信丢包原因总结