博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
open_clientfd(char* hostname,int port)和open_listenfd(int port)
阅读量:7053 次
发布时间:2019-06-28

本文共 2490 字,大约阅读时间需要 8 分钟。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef struct sockaddr SA;int open_clientfd(char* hostname,int port){ int clientfd; struct hostent * hp; struct sockaddr_in serveraddr; char* msg; /*创建socket*/ if((clientfd=socket(AF_INET,SOCK_STREAM,0))<0) { msg="client socket() error!\n"; write(STDOUT_FILENO,msg,strlen(msg)); return -1; } msg="client socket() success!\n"; write(STDOUT_FILENO,msg,strlen(msg)); /*填写server的ip地址和port*/ if((hp=gethostbyname(hostname))==NULL) { msg="client gethostbyname() error!\n"; write(STDOUT_FILENO,msg,strlen(msg)); return -2; } msg="client gethostbyname() success!\n"; write(STDOUT_FILENO,msg,strlen(msg)); bzero((char*)&serveraddr,sizeof(serveraddr)); serveraddr.sin_family=AF_INET; serveraddr.sin_port=htons(port); bcopy((char*)hp->h_addr_list[0],(char*)&serveraddr.sin_addr.s_addr,hp->h_length); /*建立连接*/ if(connect(clientfd,(SA*)&serveraddr,sizeof(serveraddr))<0) { msg="client connect() error!\n"; write(STDOUT_FILENO,msg,strlen(msg)); return -3; } msg="client connect() success!\n"; write(STDOUT_FILENO,msg,strlen(msg)); return clientfd;}int open_listenfd(int port){ int listenfd,optval; struct sockaddr_in serveraddr; char* msg; /*创建socket*/ if((listenfd=socket(AF_INET,SOCK_STREAM,0))<0) { msg="server socket() error!\n"; write(STDOUT_FILENO,msg,strlen(msg)); return -1; } msg="server socket() success!\n"; write(STDOUT_FILENO,msg,strlen(msg)); /*配置服务器使得它能被立即终止和重启*/ if(setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,(const void *)&optval,sizeof(int))<0) { msg="server setsockopt() error!\n"; write(STDOUT_FILENO,msg,strlen(msg)); return -2; } msg="server setsockopt() success!\n"; write(STDOUT_FILENO,msg,strlen(msg)); /*绑定服务端的ip和端口*/ bzero((char*)&serveraddr,sizeof(serveraddr)); serveraddr.sin_family=AF_INET; serveraddr.sin_port=htons((unsigned short)port); serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(listenfd,(SA*)&serveraddr,sizeof(serveraddr))<0) { msg="server bind() error!\n"; write(STDOUT_FILENO,msg,strlen(msg)); return -3; } msg="server bind() success!\n"; write(STDOUT_FILENO,msg,strlen(msg)); /*创建listen*/ if(listen(listenfd,1024)<0) { msg="server listen() error!\n"; write(STDOUT_FILENO,msg,strlen(msg)); return -3; } msg="server listen() success!\n"; write(STDOUT_FILENO,msg,strlen(msg)); return listenfd;}

 

转载于:https://www.cnblogs.com/jiayith/p/3581215.html

你可能感兴趣的文章
worksteal thread pool
查看>>
视频数据采集模块设计
查看>>
跟我extjs5(38--单个模块的设计[6获得模块列表数据])
查看>>
centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数...
查看>>
Oracle修改默认字符编码
查看>>
HDU ACM 2845 Beans-&gt;动态规划
查看>>
EBS创建相应的用户
查看>>
android国际化(多语言)
查看>>
贝勒爷教你怎样在Mac上安装Microsoft Office
查看>>
SQL Server,MySQL,Oracle三者的区别
查看>>
ssh -v root@xxxxx 显示登录的细节
查看>>
负载均衡的场景下ASP.NET Core如何获取客户端IP地址
查看>>
crtmpserver系列之一:流媒体概述
查看>>
微信小程序Nginx环境配置
查看>>
Uiautomator之入门
查看>>
使用谷歌浏览器进行Web开发技巧
查看>>
高效能人士的7个习惯
查看>>
要点Java20 java.util.Collections
查看>>
KETTLE集群搭建
查看>>
Linux实战案例(6)yum查找、卸载、和安装软件
查看>>