Steps to create TCP in LinuxTCP programming requires two sets of codes for the client and server, and the process of creating TCP is not completely consistent. ServerCreate a socket using the socket function Use the setsockopt function to set the socket properties Use the bind function to bind the IP address and port information to the socket and use the listen function to listen to the specified port Use the accept function to receive the client's connection request Use send/recv and read/write functions to send and receive data Use the close function to close the network connection and monitor ClientUse the socket function to create a socket and use the setsockopt function to set socket properties Use the bind function to bind the IP address and port information Set the IP address and port to connect to and use the connect function to request a connection Use send/recv and read/write functions to send and receive data Use the close function to close the network connection TCP establishment processSample Codeserver #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <pthread.h> #include <time.h> #define MAXSIZE 128 char news[MAXSIZE]; int res; //Used to receive function return value void* pthread_chat(void * arg) //Create a thread to receive data { int confd = *(int *)arg; while(1) { res = recv(confd, news, sizeof(news), 0); if(res <= 0) { perror("recv"); break; } printf("The news is: %s\n",news); memset(news,0,MAXSIZE); send(confd,"OK",2,0); } printf("One client over\n"); close(confd); } char *Time() //Get the current time { time_t timer; struct tm *tblock; timer = time(NULL); tblock = localtime(&timer); return asctime(tblock); } void save(char *s) //Store log file { int fd; fd = open("journal",O_RDWR|O_APPEND|O_CREAT); if(fd < 0) perror("open"); else { char *buf = Time(); strcat(buf,s); write(fd,buf,MAXSIZE); lseek(fd,0,SEEK_END); if(res < 0) perror("write"); } } int main() { int sockfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in saddr, caddr; saddr.sin_family = AF_INET; saddr.sin_port = htons(6666); saddr.sin_addr.s_addr = inet_addr("127.0.0.1"); res = bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr)); if(res < 0) perror("bind"); listen(sockfd, 5); //Listen to port while(1) { int len = sizeof(caddr); int confd = accept(sockfd,(struct sockaddr*)&caddr, &len); if(confd < 0) { perror("accept"); continue; }else { save(inet_ntoa(caddr.sin_addr)); } printf("Accept confdis:%d, ip=%s\n",confd,inet_ntoa(caddr.sin_addr)); pthread_t tid; pthread_create(&tid, NULL, pthread_chat, &confd); } } Client #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define MAXSIZE 128 char news[MAXSIZE]; int res; //Used to receive function return value int main() { printf("------Welcome join the chat room-----\n"); printf("If you want to quit,please input --bye--\n"); int sockfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in saddr; saddr.sin_family = AF_INET; saddr.sin_port = htons(6666); saddr.sin_addr.s_addr = inet_addr("127.0.0.1"); int confd = connect(sockfd,(struct sockaddr*)&saddr,sizeof(saddr)); if(confd < 0) perror("connect"); while(1) { printf("Please input the news\n"); fgets(news,MAXSIZE,stdin); if(strncmp(news,"bye",3) == 0) { break; } send(sockfd, news, strlen(news), 0); memset(news,0,MAXSIZE); recv(sockfd, news, sizeof(news), 0); printf("The serve's news is: %s\n",news); } close(sockfd); exit(0); } Please note that since the server uses multi-threaded development, you need to add the -lpthread option when compiling. The program running effect is as follows: This is the end of this article about the process of creating TCP connection in Linux system. For more relevant content about creating TCP connection in Linux, please search previous articles on 123WORDPRESS.COM or continue to browse the related articles below. I hope you will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: 14 practical experiences on reducing SCSS style code by 50%
>>: Call the font according to the font name to let the browser display the font you want
Table of contents background accomplish Supplemen...
Readonly and Disabled both prevent users from cha...
This article mainly introduces the detailed proce...
Preface This is an old demand, but there are stil...
Preface The latest version of MySQL 8.0 is 8.0.4 ...
question Nginx takes $remote_addr as the real IP ...
1. Use CSS to draw a small pointed-corner chat di...
Table of contents 1. Download JDK (take jdk1.8.0 ...
Table of contents Preface 1. Array traversal meth...
Use of built-in functions in the database This ar...
Table of contents Introduction to Arrays Array li...
Table of contents 1. Browser local storage techno...
Table of contents 1. Supplementary knowledge poin...
I have always used Loadrunner to do performance t...
Rendering pipeline with external css files In the...