lisn_acp.c
2016-02-11 12:24
295 查看
#include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<unistd.h> #include<string.h> #include<stdlib.h> #include<stdio.h> #define PORT 2345 int main(void) { int sockfd,newsockfd; struct sockaddr_in addr; int addr_len=sizeof(struct sockaddr_in); if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0) { perror("socket created error!"); exit(1); } else { printf("socket created successfully!\nsocket id:%d\n",sockfd); } bzero(&addr,sizeof(struct sockaddr_in)); addr.sin_family=AF_INET; addr.sin_port=htons(PORT); addr.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sockfd,(struct sockaddr *)(&addr),sizeof(struct sockaddr))<0) { perror("bind error!"); exit(1); } else { printf("bind port successfully!\nlocal port:%d\n",PORT); }
/* listen函数 头文件 #include<sys/socket.h> int listen(int sockfd,int backlog); 参数 sockfd 是 已经建立的套接口 backlog 是同时处理的最大连接的请求数目 函数返回值: 若成功返回0 若失败返回-1 */
if(listen(sockfd,5)<0) { perror("listen error!"); exit(1); } else { printf("listening ........\n"); }
/* 接收连接函数accept 头文件及函数原型 #include<sys/types.h> #include<sys/socket.h> int accept(int sockfd,struct sockaddr *addr,socketlen_t *addrlen); 参数含义: sockfd 处于监听状态的socket addr 是一个sockaddr结构体类型的指针,系统会把远程主机的信息保存到这个指针所指向的结构体中, addrlen是sockaddr的内存长度,可以用sizeof函数来取得 函数的返回值: 若成功,返回新的套接口的的描述符,若失败,返回-1 当accept函数接收到一个连接时,会返回一个新的socket标识符,以后的数据传输与读取就是通过这个新的socket编号来处理的,原来参数中的socket也可以继续使用。接受连接后,远程主机的地址和端口信息就会保存到addr所指向的结构体中 */
if((newsockfd=accept(sockfd,(struct sockaddr *)(&addr),&addr_len))<0) { perror("accept error!"); } else { printf("accepted a new connecttion.\nnew socket id:%d\n",newsockfd); } return 0; }
程序运行结果:
socket created successfully! socket id:3 bind port successfully! local port:2345 listening ........ // 程序运行到这里会一直等待,说明本地计算机的2345端口处于正在监听的状态。此时打开浏览器,输入 http://本机IP:2345/ 回车 表明已经接受了连接,并且创建了新的套接字 accepted a new connecttion. new socket id:4
相关文章推荐
- hive 数据的导入导出
- winform窗体间传值
- 树形DP解 POJ3342-Party at Hali-Bula
- The processing instruction target matching "[xX][mM][lL]" is not allowed
- Java中native关键字
- 求几个相同数字组成不同位数数字的和:s=a+aa+aaa+aaaa+aa…a的值
- CSMA/CD协议
- 如何书写高质量的jQuery代码(转)
- hdu2561
- POJ 3255_Roadblocks
- POJ 3255_Roadblocks
- RAD Studio 10 up1欢迎页证书不可用
- RAD Studio 10 up1欢迎页证书不可用
- 内置函数
- javaWeb笔记(五) common-dbutils.jar 的用法
- 蓝桥杯-基础练习-数列特征
- JavaScript匿名函数调用
- 第一篇日志,准备做程序员
- yarn和hdfs
- 访问者模式——数据操作与数据结构分离