宋敬彬-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); }}
- 宋敬彬-linux网络编程 cs例子
- 网络编程简单例子(windows、linux)
- Python网络编程例子
- java网络编程----例子
- 网络编程简单例子
- 网络编程小例子
- boost网络编程例子
- linux多线程网络编程详解(包含具体例子讲解)
- 网络编程:linux socket的select函数例子
- 网络编程精短小例子
- 简单的网络编程例子
- python网络编程小例子
- python网络编程小例子
- java网络编程小例子
- linux串口编程例子
- linux 多线程编程例子
- Linux多线程编程例子
- linux串口编程例子
- 使用SIGALRM信号量和sleep冲突的解决办法
- 用Visual C++编程实现局域网多播
- Android高手进阶教程(三)之----Android 中自定义View的应用.
- Linux Shell 脚本全面学习
- XML第三讲
- 宋敬彬-linux网络编程 cs例子
- 【笔记】AS3.0实例化XML时“#1088 文档中根元素后面的标记格式必须正确”的处理
- ORACLE DECODE函数
- Linux应用程序之Helloworld入门
- HTTP错误码大全
- c/c++ API函数大全
- PHP程序员最容易出现的错误总结
- android 这 Gallery的使用
- 调试经验总结:VC下的错误对话框