Linux Socket TCP/IP通信
生活随笔
收集整理的這篇文章主要介紹了
Linux Socket TCP/IP通信
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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 5555int 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 5555int 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; }
轉載于:https://www.cnblogs.com/young525/p/5873834.html
總結
以上是生活随笔為你收集整理的Linux Socket TCP/IP通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一步步学习微软InfoPath2010和
- 下一篇: Linux操作系统-命令-free