服务端
#include <stdio.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#define IP "192.168.124.234"
#define PORT 8999
int main(void)
{
int lfd=socket(AF_INET,SOCK_STREAM,0);
if(lfd<0)
{
fprintf(stderr,"%d",__LINE__);
perror("socket");
return -1;
}
printf("创建套接字\n");
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(PORT);
sin.sin_addr.s_addr=inet_addr(IP);
int bi=bind(lfd,(struct sockaddr*)&sin,sizeof(sin));
if(bi<0)
{
fprintf(stderr,"%d",__LINE__);
perror("bind");
return -1;
}
int m=listen(lfd,300);
if(m<0)
{
fprintf(stderr,"%d",__LINE__);
perror("bind");
return -1;
}
struct sockaddr_in cin;
socklen_t len=sizeof(cin);
int newfd=accept(lfd,(struct sockaddr*)&cin,&len);
if(newfd<0)
{
perror("accept");
return -1;
}
printf("服务器连接了,ip是%s,端口是%d\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port));
char buf[255]={0};
while (1)
{
int r=recv(newfd,buf,sizeof(buf),0);
if(r<0)
{
perror("recv");
return -1;
}
if(r==0)
{
break;
}
printf("%s\n",buf);
bzero(buf,sizeof(buf));
}
close(lfd);
close(newfd);
return 0;
}
客户端
#include <stdio.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#define PORT 9999
#define IP "192.168.124.234"
int main(void)
{
int fd=socket(AF_INET,SOCK_STREAM,0);
if(fd<0)
{
fprintf(stderr,"%d",__LINE__);
perror("socket");
return -1;
}
printf("创建套接字\n");
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(PORT);
sin.sin_addr.s_addr=inet_addr(IP);
int bi=bind(fd,(struct sockaddr*)&sin,sizeof(sin));
if(bi<0)
{
fprintf(stderr,"%d",__LINE__);
perror("bind");
return -1;
}
struct sockaddr_in cin;
cin.sin_family=AF_INET;
cin.sin_port=htons(8999);
cin.sin_addr.s_addr=inet_addr("192.168.124.234");
int sfd=connect(fd,(struct sockaddr*)&cin,sizeof(cin));
if(sfd<0)
{
perror("connect");
return -1;
}
char buf[255]={0};
while (1)
{
bzero(buf,sizeof(buf));
fgets(buf,sizeof(buf),stdin);
buf[strlen(buf)-1]='\0';
send(fd,buf,strlen(buf),0);
if(strcmp(buf,"quit")==0)
{
break;
}
}
close(fd);
close(sfd);
return 0;
}