一、Server端
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc, char*argv[])
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addrSrv;
bzero(&addrSrv, sizeof(struct sockaddr_in));
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
bind(sockfd, (struct sockaddr*)&addrSrv, sizeof(struct sockaddr));
listen(sockfd, 3);
struct sockaddr_in addrConn;
socklen_t len = sizeof(struct sockaddr_in);
while (1)
{
int sockConn = accept(sockfd, (struct sockaddr*)&addrConn, &len);
pid_t pid = fork();
if (pid == 0)
{
close(sockfd);
while (1)
{
char buf[1024] = {0};
int n = read(sockConn, buf, 1024);
if (n == 0)
{
break;
}
printf("server recv:%s\n", buf);
write(sockConn, "server data", strlen("server data"));
}
close(sockConn);
}
else if (pid > 0)
{
close(sockConn);
}
}
close(sockfd);
return 0;
}
二、Client端
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc, char*argv[])
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addrSrv;
bzero(&addrSrv, sizeof(struct sockaddr_in));
addrSrv.sin_addr.s_addr = inet_addr("127.0.0.1");
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);
connect(sockfd, (struct sockaddr*)&addrSrv, sizeof(struct sockaddr));
char temp[1024] = {0};
while (1)
{
gets(temp);
write(sockfd, temp, strlen(temp));
char buf[1024] = {0};
read(sockfd, buf, 1024);
printf("client recv:%s\n", buf);
}
close(sockfd);
return 0;
}