服务器端
#include <unistd.h>
#include <sys/socket.h>
#include <stdio.h>
#include <strings.h>
#include <iostream>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
using namespace std;
int
main(int argc,char ** argv)
{
struct sockaddr_in servaddr,cliaddr;
bzero(&servaddr,sizeof(servaddr));
if(argc==2)
servaddr.sin_port=atoi(argv[1]);
else if(argc==3){
servaddr.sin_port=atoi(argv[2]);
inet_pton(AF_INET,argv[1],&servaddr.sin_addr);
}
else{
cout<<"USAGE: [<host>] <port>"<<endl;
exit(0);
}
servaddr.sin_family=AF_INET;
int fd;
fd=socket(AF_INET,SOCK_STREAM,0);
bind(fd,(struct sockaddr*)&servaddr,sizeof(servaddr));
listen(fd,5);
int connfd;socklen_t clilen;
for(;;){
connfd=accept(fd,(struct sockaddr*)&cliaddr,&clilen);
cout<<"guess is coming"<<endl;
char rbuf[2000],wbuf[2000];
int n=-1;
for(;;){
n=read(connfd,rbuf,2000);
if(n==0)
break;
write(connfd,rbuf,n);
}
}
}
客户端
#include "unp.h"
#include <iostream>
using namespace std;
int
main(int argc, char **argv)
{
int fd,n;
fd=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in servaddr;
servaddr.sin_family=AF_INET;
if(argc!=3){
cout<<"USAGE:<host> <port>"<<endl;
exit(0);
}
else{
servaddr.sin_port=atoi(argv[2]);
inet_pton(AF_INET,argv[1],&servaddr.sin_addr);
}
connect(fd,(struct sockaddr*)&servaddr,sizeof(servaddr));
char wbuf[2000],rbuf[2000];
while(fgets(wbuf,2000,stdin)!=NULL){
write(fd,wbuf,strlen(wbuf));
n=read(fd,rbuf,2000);
fputs(rbuf,stdout);
}
}
结果