服务端
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<unistd.h>
#include<cerrno>
#include<pthread.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<stdio.h>
#define SERV_PORT 9527
using namespace std;
void sys_err(const char *str)
{
perror(str);
exit(1);
}
int main()
{
int lfd=0,cfd=0;
int ret=0;
char buf[BUFSIZ],client_IP[1024];
struct sockaddr_in serv_addr,clit_addr;
socklen_t clit_addr_len;
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERV_PORT);
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
lfd=socket(AF_INET,SOCK_STREAM,0);
if(lfd==-1){
sys_err("socket error:");
}
bind(lfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));
listen(lfd,128);
clit_addr_len=sizeof(clit_addr);
cfd=accept(lfd,(struct sockaddr*)&clit_addr,&clit_addr_len);
if(cfd==-1){
sys_err("accept error:");
}
cout<<"client ip:"<<inet_ntop(AF_INET,&clit_addr.sin_addr.s_addr,client_IP,sizeof(client_IP))<<"port: "<<ntohs(clit_addr.sin_port)<<endl;
while(1){
ret=read(cfd,buf,sizeof(buf));
write(STDOUT_FILENO,buf,ret);
for(int i=0;i<ret;i++)
buf[i]=toupper(buf[i]);
write(cfd,buf,ret);
}
close(lfd);
close(cfd);
return 0;
}
客户端
#include<iostream>
#include<stdio.h>
#include<cstdlib>
#include<cstring>
#include<unistd.h>
#include<cerrno>
#include<pthread.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#define SERV_PORT 9527
using namespace std;
void sys_err(const char *str)
{
perror(str);
exit(1);
}
int main()
{
int cfd;
char buf[BUFSIZ];
struct sockaddr_in serv_addr;
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERV_PORT);
inet_pton(AF_INET,"127.0.0.1",&serv_addr.sin_addr.s_addr);
cfd=socket(AF_INET,SOCK_STREAM,0);
if(cfd==-1) sys_err("socket error:");
int ret=connect(cfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
if(ret!=0){
sys_err("connect error:");
}
while(1){
write(cfd,"hello\n",6);
ret=read(cfd,buf,sizeof(buf));
write(STDOUT_FILENO,buf,ret);
sleep(1);
};
return 0;
}