LINUX网络编程---实现TCP简单通信
熟记流程图
服务器代码:
#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<strings.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<pthread.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<stdbool.h>
#include<sys/select.h>
int main()
{
//create socket
int sockfd = socket(AF_INET,SOCK_STREAM,0);
//bind ip and port
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(6789);
addr.sin_addr.s_addr = inet_addr("192.168.3.48");
socklen_t addrlen = sizeof(struct sockaddr_in);
bind(sockfd,(struct sockaddr*)&addr,addrlen);
//listen socket
listen(sockfd,5);
//waitting connect
struct sockaddr_in peer;
socklen_t size;
int confd = accept(sockfd,(struct sockaddr*)&peer,&size);
char msg[1024]={0};
while(1)
{
memset(msg,0,sizeof(msg));
recv(confd,msg,sizeof(msg),0);
printf("socket recv:%s\n",msg);
}
close(confd);
close(sockfd);
return 0;
}
客户端代码:
#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<strings.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<pthread.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<stdbool.h>
#include<sys/select.h>
int main()
{
//create socket
int sockfd = socket(AF_INET,SOCK_STREAM,0);
//connect
struct sockaddr_in peer;
peer.sin_family = AF_INET;
peer.sin_port = htons(6789);
peer.sin_addr.s_addr = inet_addr("192.168.3.48");
socklen_t size = sizeof(struct sockaddr);
connect(sockfd,(struct sockaddr*)&peer,size);
char msg[]="hello jason";
while(1)
{
send(sockfd,msg,sizeof(msg),0);
sleep(1);
}
close(sockfd);
return 0;
}