Linux C监听端口
来源:互联网 发布:阿里云服务器宕机 编辑:程序博客网 时间:2024/06/11 20:34
int socket(int domain,int type,int protocol);
domain参数指定协议族
type参数指定这个套接字的通信类型
protocol参数指定使用的协议
AF_UNIX UNIX域协议(文件系统套接字)
AF_INET ARPA因特网协议(UNIX网络套接字)
AF_ISO IOS标准协议
AF_NS 施乐(Xerox)网络系统协议
AF_IPX Novell IPX协议
AF_APPLETALK Appletalk DDS
最常用的就是AF_UNIX和AF_INET
AF_INET套接字可用于TCP/IP网络进行通信。
socket函数的参数type指定用于新套接字的通信特性、它的取值包括SOCK_STREAM和SOCK_DGRAM。
SOCK_STRERAM通常用在TCP连接,SOCK_DGRAM通常用于UDP数据报。
socket函数的参数protocol通常选择0,表示使用默认协议。
在AF_INET域中,套接字地址由结构sockaddr_in来指定,在netinet/in.h中
struct sockaddr_in{ short int sin_family; unsigned short int sin_port; struct in_addr sin_addr;};
直接看代码吧:
有的时候客户端无法与服务端建立TCP连接,可能是服务端的防火墙没关,没有打开端口。
可以使用fork()函数创建字进程,这样改程序就能与多个客户端进行连接。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/socket.h>#include<netinet/in.h>#define SERV_PORT 8000#define SIZE 100int main(){ struct sockaddr_in servaddr,cliaddr; socklen_t cliaddr_len; int listenfd,connfd; char buf[MAXLINE]; int i,n,flag = 0; listenfd = socket(AF_INET,SOCK_STREAM,0); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); //因为本机地址可以有很多种表示,htonl只是为了保险起见,可以去掉 servaddr.sin_port = htons(SERV_PORT);bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr)); //端口绑定listen(listenfd,20);//监听端口,20表示最大阻塞printf("Accepting connections..\n"); while(1){ cliaddr_len = sizeof(cliaddr);connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&cliaddr_len); //如果得不到客户端发来的消息,将会被阻塞,一直等到消息到来n = read(connfd,buf,MAXLINE); //如果n<=0,表示客户端已断开while(1){ if(n!=0){ for(i = 0;i<n;i++)printf("%c",buf[i]); //输出客户端发来的信息 } else{ printf("Client say close the connection..\n");break; }n = read(connfd,buf,MAXLINE);}close(connfd); }}0 0
- Linux C监听端口
- linux 打开监听端口
- linux 监听网络端口
- linux端口监听命令
- Linux 之端口监听
- 查看linux端口监听情况
- linux下端口的监听
- Linux下监听80端口
- Linux环境C/C++起Socket Server监听8080端口的代码实现
- NodeJs在linux下关闭监听端口
- linux环境之监听端口配置
- linux查看监听端口(转载)
- Linux 查看监听端口的方法
- Linux关闭正在监听的端口
- tomcat7监听端口 改为 80 linux Debian
- Linux通过监听的端口管理进程
- linux查看端口以及端口的监听程序
- Linux端口占用,nodejs 监听80端口,Error: listen EADDRINUSE
- tomcat编译
- 2017跟着小虎玩着去软考--项目管理师上午考试试题之五(解析2016下半年项目管理师上午试题16-19题)
- CDOJ(UESTC) 251 导弹拦截(最长递增子序列nlogn算法+路径打印)
- 自己实现Struts2(二)加载配置文件
- 蓝桥杯代码填空——九数组分数
- Linux C监听端口
- tensorflow安装
- freertos内核走读2——task任务调度机制(二)
- 如何实现幻灯片效果/图片轮播
- 记网易笔试
- 不写对暴力不删!!!
- TOMCAT原理详解及请求过程
- 基于ubuntu14.04搭建OpenWrt开发环境
- MySQL的八小时问题