TCP server:
#include <iostream> #include <cstring> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #include <stdlib.h> using namespace std; #define MAXLINE 4096 int main() { int listenfd,connfd; struct sockaddr_in servaddr; struct sockaddr_in cliaddr; char buff[MAXLINE]; int n; if((listenfd = socket(AF_INET,SOCK_STREAM,0)) == -1) { return 0; } memset(&servaddr,0,sizeof(servaddr)); memset(&cliaddr,0,sizeof(cliaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(6666); if(bind(listenfd,(struct sockaddr*)&servaddr, sizeof(servaddr)) == -1) { return 0; } if(listen(listenfd,10) == -1) { return 0; } while(1) { int len = sizeof(cliaddr); if((connfd = accept(listenfd,(struct sockaddr*)&cliaddr,(socklen_t*)&len)) == -1) { continue; } n = recv(connfd,buff,MAXLINE,0); buff[n] = '\0'; cout<<"recv:"<<buff<<endl; char sendline[] = "recv from client"; if(send(connfd,sendline,strlen(sendline),0)<0) { return 0; } close(connfd); } }TCP client
#include <iostream> #include <cstring> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #include <stdlib.h> using namespace std; #define MAXLINE 4096 int main() { int listenfd,connfd; struct sockaddr_in servaddr; struct sockaddr_in cliaddr; char buff[MAXLINE],sendbuff[MAXLINE]; int n; if((listenfd = socket(AF_INET,SOCK_DGRAM,0)) == -1) { return 0; } memset(&servaddr,0,sizeof(servaddr)); memset(&cliaddr,0,sizeof(cliaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(6666); if(bind(listenfd,(struct sockaddr*)&servaddr, sizeof(servaddr)) == -1) { return 0; } cin>>sendbuff; int len = sizeof(cliaddr); sendto(listenfd,sendbuff,strlen(sendbuff),0,(struct sockaddr*)&servaddr,len); int recvnum = recvfrom(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&servaddr,(socklen_t*)&len); if (recvnum<0) { return 0; } cout<<"recv from client:"<<buff<<endl; close(listenfd); return 0; }UDP server
#include <iostream> #include <cstring> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #include <stdlib.h> using namespace std; #define MAXLINE 4096 int main() { int listenfd,connfd; struct sockaddr_in servaddr; struct sockaddr_in cliaddr; char buff[MAXLINE],sendbuff[MAXLINE] = "send from server"; int n; if((listenfd = socket(AF_INET,SOCK_DGRAM,0)) == -1) { return 0; } memset(&servaddr,0,sizeof(servaddr)); memset(&cliaddr,0,sizeof(cliaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(6666); if(bind(listenfd,(struct sockaddr*)&servaddr, sizeof(servaddr)) == -1) { return 0; } while(1) { int len = sizeof(cliaddr); int recvnum = recvfrom(listenfd,buff,sizeof(buff),0,(struct sockaddr*)&cliaddr,(socklen_t*)&len); if (recvnum<0) { return 0; } buff[recvnum] = '\0'; cout<<"recv from client:"<<buff<<endl; sendto(listenfd,sendbuff,MAXLINE,0,(struct sockaddr*)&cliaddr,len); } }UDP client
#include <iostream> #include <cstring> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #include <stdlib.h> using namespace std; #define MAXLINE 4096 int main() { int listenfd,connfd; struct sockaddr_in servaddr; char buff[MAXLINE],sendbuff[MAXLINE]; int n; if((listenfd = socket(AF_INET,SOCK_DGRAM,0)) == -1) { return 0; } memset(&servaddr,0,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(6666); int len = sizeof(servaddr); cin>>sendbuff; sendto(listenfd,sendbuff,strlen(sendbuff),0,(struct sockaddr*)&servaddr,len); int recvnum = recvfrom(listenfd,buff,MAXLINE,0,(struct sockaddr*)&servaddr,(socklen_t*)&len); if (recvnum<0) { return 0; } cout<<"recv from server:"<<buff<<endl; }