server.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/types.h>
#include <pthread.h>
void* fun(void *arg);
int main(){//创建监听套接字
int sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0){
perror("socket:");
return -1;
}//绑定服务器的地址和端口号
struct sockaddr_in seraddr;
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(6666);
seraddr.sin_addr.s_addr=inet_addr("192.168.21.138");
if(bind(sockfd,(struct sockaddr*)&seraddr,sizeof(seraddr))<0){
perror("bind");
return -1;
}//监听
if(listen(sockfd,5)<0){
perror("listen");
return -1;
}
char buf[32]={0};
pthread_t tid;
while(1){//接收连接请求
int comfd=accept(sockfd,NULL,NULL);
pthread_create(&tid,NULL,fun,&comfd);
if(comfd>0){
printf("客户端连接成功\n");
}
while(1){
int ret=read(comfd,buf,sizeof(buf));
if(ret==0){
printf("客户端断开连接\n");
close(comfd);
break;
}
printf("接收客户端的数据:%s\n",buf);
memset(buf,0,sizeof(buf));
}
}
return 0;
}
void * fun(void *arg){
int comfd=*(int*)arg;
char buf[32]={0};
while(1){
scanf("%s",buf);
write(comfd,buf,strlen(buf));
}
}
client.c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<strings.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netinet/ip.h>
void *fun(void* arg){
int clifd=*(int*)arg;
char buf[32]={0};
while(1){
read(clifd,buf,sizeof(buf));
printf("接收服务器端的数据:%s\n",buf);
memset(buf,0,sizeof(buf));
}
}
int main(){
//创建一个套接字
int clifd=socket(AF_INET,SOCK_STREAM,0);
if(clifd<0){
perror("socket");
return -1;
}
struct sockaddr_in seraddr;
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(6666);
seraddr.sin_addr.s_addr=inet_addr("192.168.21.138");
//connect(clifd,(struct sockaddr*)&seraddr,sizeof seraddr);
if(connect(clifd,(struct sockaddr*)&seraddr,sizeof(seraddr))<0){
perror("connect");
return -1;
}
char buf[32];
pthread_t tid;
pthread_create(&tid,NULL,fun,&clifd);
while(1){
scanf("%s",buf);
write(clifd,buf,strlen(buf));
}
close(clifd);
return 0;
}