客户端
#include#include #include //读写分离就要包含线程相关的头文件 #include #include #include #include #define SERVPORT 5000 int main(int argc, char **argv) { int ud, n; struct sockaddr_in ser, cli; char sendline[1000]; char recvline[1000]; if (argc != 2) { printf("usage: server address!n"); exit(0); } ud = socket(AF_INET, SOCK_DGRAM, 0); bzero(&ser, sizeof(ser)); ser.sin_family = AF_INET; ser.sin_port = htons(SERVPORT); ser.sin_addr.s_addr = inet_addr(argv[1]); while (fgets(sendline, 1000, stdin)) { sendto(ud, sendline, strlen(sendline), 0, (struct sockaddr *)&ser, sizeof(ser)); n = recvfrom(ud, recvline, 1000, 0, NULL, NULL); recvline[n] = ' '; printf("********************************n"); fputs(recvline, stdout); printf("********************************n"); } close(ud); return 0; }
服务器
#include#include #include #include #include #include #include #define SERVPORT 5000 int main() { int ls, connfd, n; struct sockaddr_in ser, cli; socklen_t clilen; char msg[1000]; ls = socket(AF_INET, SOCK_DGRAM, 0); bzero(&ser, sizeof(ser)); ser.sin_family = AF_INET; ser.sin_port = htons(SERVPORT); ser.sin_addr.s_addr = htonl(INADDR_ANY); bind(ls, (struct sockaddr *)&ser, sizeof(ser)); while (1) { clilen = sizeof(cli); n = recvfrom(ls, msg, 1000, 0, (struct sockaddr *)&cli, &clilen); sendto(ls, msg, n, 0, (struct sockaddr *)&cli, sizeof(cli)); printf("--------------------------------n"); printf("%s",cli); msg[n] = ' '; printf("--------------------------------------n"); printf("%sn", msg); printf("--------------------------------------n"); } close(ls); return 0; }



