Linux Socket TCP通信
来源:互联网 发布:js中for in循环 编辑:程序博客网 时间:2024/05/18 22:12
注意:这里接收的网卡默认是eth0的,如果机器的网卡不是这个接收数据,则可能出现blind error!
1. Server端
- /*socket tcp服务器端*/
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <errno.h>
- #include <netdb.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <unistd.h>
- #define SERVER_PORT 5555
- int main()
- {
- int serverSocket;
- struct sockaddr_in server_addr;
- struct sockaddr_in clientAddr;
- int addr_len = sizeof(clientAddr);
- int client;
- char buffer[200];
- int iDataNum;
- if((serverSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0)
- {
- perror("socket");
- return 1;
- }
- bzero(&server_addr, sizeof(server_addr));
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(SERVER_PORT);
- server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- if(bind(serverSocket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
- {
- perror("connect");
- return 1;
- }
- if(listen(serverSocket, 5) < 0)
- {
- perror("listen");
- return 1;
- }
- while(1)
- {
- printf("Listening on port: %d\n", SERVER_PORT);
- client = accept(serverSocket, (struct sockaddr*)&clientAddr, (socklen_t*)&addr_len);
- if(client < 0)
- {
- perror("accept");
- continue;
- }
- printf("\nrecv client data...n");
- printf("IP is %s\n", inet_ntoa(clientAddr.sin_addr));
- printf("Port is %d\n", htons(clientAddr.sin_port));
- while(1)
- {
- iDataNum = recv(client, buffer, 1024, 0);
- if(iDataNum < 0)
- {
- perror("recv");
- continue;
- }
- buffer[iDataNum] = '\0';
- if(strcmp(buffer, "quit") == 0)
- break;
- printf("%drecv data is %s\n", iDataNum, buffer);
- send(client, buffer, iDataNum, 0);
- }
- }
- return 0;
- }
2. client端
- /*socket tcp客户端*/
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <errno.h>
- #include <netdb.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <unistd.h>
- #define SERVER_PORT 5555
- int main()
- {
- int clientSocket;
- struct sockaddr_in serverAddr;
- char sendbuf[200];
- char recvbuf[200];
- int iDataNum;
- if((clientSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0)
- {
- perror("socket");
- return 1;
- }
- serverAddr.sin_family = AF_INET;
- serverAddr.sin_port = htons(SERVER_PORT);
- serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
- if(connect(clientSocket, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0)
- {
- perror("connect");
- return 1;
- }
- printf("connect with destination host...\n");
- while(1)
- {
- printf("Input your world:>");
- scanf("%s", sendbuf);
- printf("\n");
- send(clientSocket, sendbuf, strlen(sendbuf), 0);
- if(strcmp(sendbuf, "quit") == 0)
- break;
- iDataNum = recv(clientSocket, recvbuf, 200, 0);
- recvbuf[iDataNum] = '\0';
- printf("recv data of my world is: %s\n", recvbuf);
- }
- close(clientSocket);
- return 0;
- }
0 0
- Linux Socket TCP通信
- linux TCP socket 通信
- linux Tcp 通信socket
- Linux Socket TCP通信
- Linux Socket TCP通信
- Linux Socket TCP通信
- Linux Socket TCP/IP通信
- linux TCP socket 通信demo
- linux 中socket的TCP/IP通信
- Linux中的socket通信——TCP
- tcp ip 通信socket
- socket网络通信(tcp)
- socket TCP通信实例
- socket网络通信(tcp)
- <>socket-通信-tcp协议
- TCP Socket通信学习
- tcp ip 通信socket
- C++ TCP socket通信
- 清醒、坦诚是做人之必须;聪明、智慧是做事之必须!
- ios CLLocationManager定位
- 自己动手写CPU 笔记
- 自驾出游系列之(一): 自驾游应该准备和注意的事项
- Http Response Code[整理]
- Linux Socket TCP通信
- weblogic windows下创建 新域
- 数字隔离器件的选型与应用详解
- Virtualbox虚拟Ubuntu共享文件夹设置
- C#从入门到精通读书笔记 结构、类(四)
- hadoop-HBase-过滤器
- MongoDB常用操作一查询find方法db.collection_name.find()
- 简单分段函数求职
- could not initialize proxy - no Session