服务器
#include <iostream> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #define MAXLINE 4096 #define SERVER_PORT 1234 using namespace std; int main() { int listenfd,connfd; struct sockaddr_in seraddr; struct sockaddr_in cliaddr; char buff[MAXLINE] = {}; int len; if (-1 == (listenfd = socket(PF_INET,SOCK_STREAM,0))) { cout<<"create socket failed!"<<endl; return 0; } else { cout<<"create socket success!"<<endl; } memset(&seraddr,0,sizeof(seraddr)); seraddr.sin_family = AF_INET; seraddr.sin_addr.s_addr = htonl(INADDR_ANY); seraddr.sin_port = htons(SERVER_PORT); if (-1==bind(listenfd,(struct sockaddr*)&seraddr,sizeof(seraddr))) { cout<<"bind socket failed!"<<endl; return 0; } else { cout<<"bind socket success!"<<endl; } if (-1==listen(listenfd,10)) { cout<<"listen socket failed!"<<endl; return 0; } else { cout<<"listen socket success!"<<endl; } socklen_t clilen = sizeof(cliaddr); if (-1==(connfd = accept(listenfd,(struct sockaddr*)&cliaddr,&clilen))) { cout<<"accept socket failed!"<<endl; return 0; } else { cout<<"accept socket success!"<<endl; } while ((len = recv(connfd,buff,MAXLINE,0)>0)) { cout<<"recv msg from client:"<<buff<<endl; if (0 == strcmp(buff,"quit")) { break; } memset(buff,0,MAXLINE); } close(connfd); close(listenfd); return 0; }
客户端
#include <iostream> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <arpa/inet.h> #define MAXLINE 4096 #define SERVER_PORT 1234 #define SERVER_ADDR "127.0.0.1" using namespace std; int main() { int clientfd; struct sockaddr_in seraddr; char buff[MAXLINE] = {}; memset(&seraddr,0,sizeof(seraddr)); seraddr.sin_family = AF_INET; seraddr.sin_port = htons(SERVER_PORT); seraddr.sin_addr.s_addr = inet_addr(SERVER_ADDR); if (-1==(clientfd = socket(PF_INET,SOCK_STREAM,0))) { cout<<"create socket error!"<<endl; return 0; } if (-1 == connect(clientfd,(struct sockaddr*)&seraddr,sizeof(seraddr))) { cout<<"connect failed"<<endl; return 0; } cin>>buff; while (0 != strcmp(buff,"quit")) { if (-1 == send(clientfd,buff,strlen(buff),0)) { cout<<"send msg: ""<<buff<<" " success"<<endl; } memset(buff,0,MAXLINE); cin>>buff; } close(clientfd); return 0; }