一、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;}