Linux网络编程之TCP编程,网络属性设置setsockopt,快速重启
来源:互联网 发布:java aqs 编辑:程序博客网 时间:2024/05/17 22:22
12_setsockopt_server.c
//Linux网络编程之TCP编程,网络属性设置setsockopt,快速重启//网络属性系统默认关闭/*-->为了通知套接口实现不要因为一个地址已被一个套接口使用就不让它与另一个套接口捆绑,应用程序可在bind()调用前先设置 SO_REUSEADDR 选项。int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len);-->int_addr_t inet_addr(const char *strptr); 将strptr所指的字符串转换成32位的网络字节序二进制值,返回转换后的地址。*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#define SER_PORT 9999#define SER_IP "192.168.7.115"void sys_error(char * ch){ perror(ch); exit(1);}int main(void){ char buf[128]; int serfd,ret; //1.建立流式套接字 serfd = socket(AF_INET,SOCK_STREAM,0); if(serfd < 0) sys_error("socket failed"); //打开网络属性 int on=1; //SO_REUSEADDR,s允许端口和地址重用 if(setsockopt(serfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)) < 0) sys_error("kuai su chong qi failed"); //2.绑定本地ip和端口 struct sockaddr_in ser; bzero(&ser,sizeof(ser)); ser.sin_family = AF_INET;//选择IPV4 ser.sin_port = htons(SER_PORT);//填充端口 ser.sin_addr.s_addr = inet_addr(SER_IP);//填充IP ret=bind(serfd,(struct sockaddr *)&ser,sizeof(ser)); if(ret < 0) sys_error("bind failed"); //3.监听 ret=listen(serfd,5); if(ret < 0) sys_error("listen failed"); printf("listent ok\n"); //4.接收 struct sockaddr_in self; bzero(&self,sizeof(self)); int len=sizeof(self); int newfd; newfd=accept(serfd,(struct sockaddr *)&self,&len); if(newfd < 0) sys_error("accept failed"); //5.读取数据 while(1) { bzero(buf,128); ret=read(newfd,buf,128); if(ret<0) sys_error("read failed"); else if(ret == 0) { fprintf(stdout,"Bye-Bye\n"); break; } else printf("buf from client:%s",buf); } //6.关闭 close(serfd); close(newfd); return 0;}
12_setsockopt_client.c
//Linux网络编程之TCP编程,网络属性设置//网络属性系统默认关闭#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <unistd.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#define SER_PORT 9999#define SER_IP "192.168.7.115"void sys_error(char * ch){ perror(ch); exit(1);}int main(void){ int clifd,ret; char buf[128]; //1.建立流式套接字 clifd=socket(AF_INET,SOCK_STREAM,0); if(clifd < 0) sys_error("socket failed"); //2.主动发起连接 struct sockaddr_in ser; bzero(&ser,sizeof(ser)); ser.sin_family = AF_INET; ser.sin_port = htons(SER_PORT); ser.sin_addr.s_addr = inet_addr(SER_IP); ret = connect(clifd,(struct sockaddr *)&ser,sizeof(ser)); if(ret < 0) sys_error("connect failed"); printf("connect ok\n"); //3.写数据 while(1) { bzero(buf,128); fprintf(stderr,"please input:"); fgets(buf,128,stdin); if(write(clifd,buf,strlen(buf)) < 0) sys_error("write failed"); if(!strncmp(buf,"quit",4)) break; } //4.关闭 close(clifd); return 0;}
阅读全文
1 0
- Linux网络编程之TCP编程,网络属性设置setsockopt,快速重启
- Linux网络编程之TCP编程,select多路复用和超时检测,网络属性设置setsockopt之快速重启(非常经典)
- Linux网络编程之TCP编程,select多路复用(经典),但不能够快速重启
- 网络编程之setsockopt
- 网络编程之setsockopt
- linux网络编程之TCP编程----初级
- Linux网络编程之TCP编程
- linux网络编程之TCP编程
- Linux网络编程之tcp/ip编程
- Linux网络编程之TCP编程
- linux网络编程之setsockopt()函数来设置socket状态以及getsockopt函数只用总结
- UNIX网络编程--Setsockopt
- Linux网络编程-tcp缓存设置
- Linux 网络编程 TCP
- 【Linux网络编程】TCP
- Linux TCP网络编程
- linux TCP网络编程
- Linux网络---TCP编程
- 7.2、Cassandra快照备份
- python join用法总结
- ubutu系统中gcc生成.so且调用
- 【软件系肖潇】解决使用DButils进行jdbc多表联合操作时抛出sql异常的问题
- opencv算术运算:bitwise_and()
- Linux网络编程之TCP编程,网络属性设置setsockopt,快速重启
- Aspose.word for java 去除水印问题 加执照
- Error:Your project path contains non-ASCII characters. This will most likely
- 服务端使用request.getInputStream()接收参数
- 面试中单例模式有几种写法
- 简单二叉树
- 规模最小增长速度却最快,PaaS云计算发展有哪些亮点?
- 阿里云推出区域经济大脑 | 苹果发布机器学习框架Turi Create | 工业超市震坤行完成2亿元B+轮融资
- 两年多开发经验的中级程序员的第一个框架 spring,springmvc,mybatis,maven