日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TCP相关代码

發布時間:2023/11/30 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP相关代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TCP 基礎代碼

//tcp_server.c #include<stdio.h> #include<error.h> #include<sys/types.h> #include<string.h> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> #include <arpa/inet.h> #include<stdlib.h> #include<error.h>int Startup(char* ip, int port) {printf("port: %d\n", port);struct sockaddr_in local;local.sin_family = AF_INET;local.sin_port = htons(port);local.sin_addr.s_addr = inet_addr(ip);//設置套接字int sock = socket(AF_INET, SOCK_STREAM, 0);if(sock == -1){perror("socket\n");exit(2);}//綁定if(bind(sock, (struct sockaddr*)&local, sizeof(local)) < 0){perror("bind\n");exit(3);}//監聽int ret = listen(sock, 5);if(ret == -1){perror("listen_sock\n");exit(3);}return sock; }void Server(int new_sock, char* ip, int port) {char buf[1024];while(1){buf[0] = 0;int s = read(new_sock, buf, sizeof(buf));if(s > 0){buf[s] = 0;printf("[%s, %d] say# %s\n", ip, port, buf);write(new_sock, buf, strlen(buf));}else if(s == 0){printf("[%s, %d] quit\n", ip, port);exit(4);}else{perror("read\n");exit(5);}} }int main(int argc, char* argv[]) {if(argc != 3){printf("Usage: %s [ip] [port]\n", argv[0]);exit(1);}//此時的套接字已經是監聽套接字int listen_sock = Startup(argv[1], atoi(argv[2]));printf("listen and bind is sucessful!\n");//建立連接struct sockaddr_in peer;while(1){socklen_t len = sizeof(peer);//此時的套接字已經是監聽套接字int new_sock = accept(listen_sock, (struct sockaddr*)&peer, &len);//此時返回的這個套接字就是負責服務的套接字if(new_sock == -1){printf("accept is error!\n");continue;}char* ip = inet_ntoa(peer.sin_addr);int port = ntohs(peer.sin_port);printf("get a new connet ip is %s, port is %d...\n", ip, port);//服務Server(new_sock, ip, port);//關閉文件描述符}return 0; } //tcp_client.c #include<stdio.h> #include<error.h> #include<sys/types.h> #include<string.h> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> #include <arpa/inet.h> #include<stdlib.h> #include<error.h>int main(int argc, char* argv[]) {if(argc != 3){printf("Usage %s [ip], [port]\n", argv[0]);exit(1);}//建立套接字int sock = socket(AF_INET, SOCK_STREAM, 0);if(sock == -1){perror("socket\n");exit(2);}struct sockaddr_in server;server.sin_family = AF_INET;server.sin_addr.s_addr = inet_addr(argv[1]);server.sin_port = htons(atoi(argv[2]));//發起連接if(connect(sock, (struct sockaddr*)&server, sizeof(server)) == -1){perror("connect\n");exit(3);}while(1){printf("Please enter#");fflush(stdout);char buf[1024];buf[0] = 0;int s = read(0, buf, sizeof(buf));if(s > 0){buf[s - 1] = 0;if(strcmp(buf, "quit") == 0){printf("client quit!\n");}write(sock, buf, strlen(buf));s = read(sock, buf, sizeof(buf) - 1);buf[s] = 0;printf("Server Echo#%s\n", buf);}}close(sock);return 0; }


TCP 多進程多線程版本

//server.c #include<stdio.h> #include<error.h> #include<sys/types.h> #include<string.h> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> #include <arpa/inet.h> #include<stdlib.h> #include<error.h>int main(int argc, char* argv[]) {if(argc != 3){printf("Usage %s [ip], [port]\n", argv[0]);exit(1);}//建立套接字int sock = socket(AF_INET, SOCK_STREAM, 0);if(sock == -1){perror("socket\n");exit(2);}struct sockaddr_in server;server.sin_family = AF_INET;server.sin_addr.s_addr = inet_addr(argv[1]);server.sin_port = htons(atoi(argv[2]));//發起連接if(connect(sock, (struct sockaddr*)&server, sizeof(server)) == -1){perror("connect\n");exit(3);}while(1){printf("Please enter#");fflush(stdout);char buf[1024];buf[0] = 0;int s = read(0, buf, sizeof(buf));if(s > 0){buf[s - 1] = 0;if(strcmp(buf, "quit") == 0){printf("client quit!\n");}write(sock, buf, strlen(buf));s = read(sock, buf, sizeof(buf) - 1);buf[s] = 0;printf("Server Echo#%s\n", buf);}}close(sock);return 0; } //client.c #include<stdio.h> #include<error.h> #include<sys/types.h> #include<string.h> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> #include <arpa/inet.h> #include<stdlib.h> #include<error.h>int main(int argc, char* argv[]) {if(argc != 3){printf("Usage %s [ip], [port]\n", argv[0]);exit(1);}//建立套接字int sock = socket(AF_INET, SOCK_STREAM, 0);if(sock == -1){perror("socket\n");exit(2);}struct sockaddr_in server;server.sin_family = AF_INET;server.sin_addr.s_addr = inet_addr(argv[1]);server.sin_port = htons(atoi(argv[2]));//發起連接if(connect(sock, (struct sockaddr*)&server, sizeof(server)) == -1){perror("connect\n");exit(3);}while(1){printf("Please enter#");fflush(stdout);char buf[1024];buf[0] = 0;int s = read(0, buf, sizeof(buf));if(s > 0){buf[s - 1] = 0;if(strcmp(buf, "quit") == 0){printf("client quit!\n");}write(sock, buf, strlen(buf));s = read(sock, buf, sizeof(buf) - 1);buf[s] = 0;printf("Server Echo#%s\n", buf);}}close(sock);return 0; }

總結

以上是生活随笔為你收集整理的TCP相关代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。