宋敬彬-linux网络编程 cs例子

来源:互联网 发布:淘宝禁止销售兴奋剂 编辑:程序博客网 时间:2024/05/22 00:07
 客户端:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#include <linux/in.h>#define PORT 8888void process_conn_client(int s);int main(int argc, char *argv[]){int s;struct sockaddr_in server_addr;int err;s = socket(AF_INET,SOCK_STREAM,0);if(s < 0){ printf("socket error\n"); return -1;}bzero(&server_addr, sizeof(server_addr));server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = htonl(INADDR_ANY);server_addr.sin_port = htons(PORT);     inet_pton(AF_INET, argv[0], &server_addr.sin_addr);connect(s, (struct sockaddr *) &server_addr, sizeof(struct sockaddr));process_conn_client(s);close(s);return 0;}void process_conn_client(int s){ssize_t size = 0;char buffer[1024];for(;;){ size = read(0, buffer, 1024); if(size > 0){ write(s, buffer, size); size = read(s, buffer, 1024); write(1, buffer, size); }}}


服务器端:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#include <linux/in.h>#define PORT 8888#define BACKLOG 2int main(int argc, char *argv[]){     void process_conn_server(int);int ss,sc;struct sockaddr_in server_addr;struct sockaddr_in client_addr;int err;pid_t pid;ss = socket(AF_INET,SOCK_STREAM,0);if(ss<0){printf("socket error\n");return -1;}bzero(&server_addr, sizeof(server_addr));server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = htonl(INADDR_ANY);server_addr.sin_port = htons(PORT);err = bind(ss, (struct sockaddr *) &server_addr, sizeof(server_addr));if(err<0){printf("bind error\n");return -1;}err = listen(ss, BACKLOG);if(err < 0){printf("listen error\n");return -1;}for(;;){int addrlen = sizeof(struct sockaddr);sc = accept(ss, (struct sockaddr*)&client_addr, &addrlen);if(sc < 0){continue;}pid = fork();if(pid == 0){ close(ss); process_conn_server(sc);}else{ close(sc);}}printf("Hello world!\n");     return 0;}void process_conn_server(int s){ ssize_t size = 0; char buffer[1024]; for(;;){     size = read(s, buffer, 1024);     if(size == 0){         return;     }   sprintf(buffer,"%d bytes altogether",size);write(s, buffer, strlen(buffer)+1,0); }}


 

原创粉丝点击