📄 client.c
字号:
#include<stdio.h>#include<sys/socket.h>#include<netinet/in.h>#include<pthread.h>#define SERVER_PORT 8010#define BUF_SIZE 1024void* dosend(void*);void* dorecv(void*);int main(int argc, char **argv){ int clientsocket; struct sockaddr_in serveraddr; if(argc != 2){ printf("usage:cilent serveripaddr\n"); exit(1); } clientsocket = socket(AF_INET, SOCK_STREAM, 0); if(clientsocket < 0){ printf("client socket error!"); } printf("client socket ok!\n"); bzero(&serveraddr, sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(SERVER_PORT); if(inet_aton(argv[1], &serveraddr.sin_addr) == 0 ){ printf("inet_aton error\n"); exit(1); } if(connect(clientsocket, (struct sockaddr*)&serveraddr, sizeof(serveraddr) ) < 0){ printf("connect error\n"); exit(1); } printf("connect ok\n"); pthread_t t1, t2; if(pthread_create(&t1, NULL, dosend, (void*)clientsocket) != 0) { printf("%d> creat thread error\n", clientsocket); exit(1); } if(pthread_create(&t2, NULL, dorecv, (void*)clientsocket) != 0) { printf("%d> creat thread error\n", clientsocket); exit(1); } printf("thread create ok\n"); return 0;}void* dosend(void* para){ char buf[BUF_SIZE]; int n; int clientsocket = (int)para; while(1){ if(scanf("%s", buf) == EOF) printf("input error\n"); n = strlen(buf); //printf("debug: %s\n", buf); if(n == 0) break; if(send(clientsocket, buf, n+1, 0) < 0){ printf("send error\n"); return; } printf("client:send ok\n"); } close(clientsocket); printf("client sender close ok\n");}void* dorecv(void* para) { char buf[BUF_SIZE]; int n; int clientsocket = (int)para; while(1) { n = recv(clientsocket, buf, BUF_SIZE, 0); if(n < 0) { printf("%d recv error\n", clientsocket); exit(1); } if(n == 0) { printf("%d > server exit\n", clientsocket); break; } printf("%d > %s\n", clientsocket, buf); } close(clientsocket); printf("client recv close ok\n");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -