服务器端程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
#include<pthread.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
void* ser_fun(void* arg)
{
pthread_detach(pthread_self());
long cfd = (long)arg;
int nread;
char buf[1024];
while (1) {
nread = read(cfd,buf,1024);
if(nread <=0)
{
close(cfd);
pthread_exit(NULL);
}
printf("buf=%s\n",buf);
sleep(1);
}
}
int main()
{
int sfd= -1,cfd = -1;
pthread_t cid;
struct sockaddr_in s_sockaddr,c_sockaddr;
int c_sockaddr_len = sizeof(c_sockaddr);//必须赋值
s_sockaddr.sin_family = AF_INET;
s_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
s_sockaddr.sin_port = htons(8888);
sfd = socket(AF_INET,SOCK_STREAM,0);
if(sfd<0)
{
perror("socket:");
exit(-1);
}
if((bind(sfd,(struct sockaddr*)&s_sockaddr,sizeof(s_sockaddr))<0))//
{
perror("bind:");
close(sfd);
exit(-1);
}
if(listen(sfd,2)<0)
{
perror("listen:");
close(sfd);
exit(-1);
}
while(1)
{
if((cfd = accept(sfd,(struct sockaddr*)&c_sockaddr,(socklen_t*)&c_sockaddr_len))<0)
{
perror("accept:");
close(sfd);
exit(-1);
}
printf("client link,ip=%s,port= %d,cfd =%d\n",inet_ntoa(c_sockaddr.sin_addr),
ntohs(c_sockaddr.sin_port),cfd);
pthread_create(&cid,NULL,ser_fun,(void*)cfd);
}
return 0;
}
客户端程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
#include<pthread.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main()
{
int cfd;
int nwrite;
char *sendbuf="abc";
sockaddr_in s_sockaddr;
s_sockaddr.sin_family = AF_INET;
inet_aton("127.0.0.1",&s_sockaddr.sin_addr);
s_sockaddr.sin_port = htons(8888);
cfd = socket(AF_INET,SOCK_STREAM,0);
if(cfd <0)
{
perror("socket:");
exit(-1);
}
if(connect(cfd,(struct sockaddr*)&s_sockaddr,sizeof(s_sockaddr))<0)
{
perror("connect:");
close(cfd);
exit(-1);
}
while(1)
{
nwrite = write(cfd,sendbuf,sizeof(sendbuf));
if(nwrite<=0)
{
perror("write:");
}
sleep(1);
}
return 0;
}