概述
- 客户端调用虚列
- 调用socket函数创建套接字
- 调用connect链接直服务端
- 调用I/O函数(write/read)与服务器进行通讯
- 调用close关闭套接字
//步骤一:创建socket
int sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0)
{
perror("sockert error");
exit(1);
}
struct sockaddr_in serveraddr;
memset(&serveraddr,0,sizeof(serveraddr));
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(atoi(argv[2]));
//将ip地址转换成网络字节序 填入到serveraddr中
inet_pton(AF_INET,argv[1],&serveraddr.sin_addr.s_addr);
//步骤二:connect 链接到服务器端;
if(connect(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr))<0)
{
perror("connect error");
exit(1);
}
//步骤三 调用I/O函数
//和服务器断进行双向 通信;
char buffer[1024];
memset(buffer,0,sizeof(buffer));
size_t size;
if((size=read(sockfd,buffer,sizeof(buffer)))<0)
{
perror("read error");
exit(1);
}
if(write(STDOUT_FILENO,buffer,size)!=size)
{
perror("write error");
}
//步骤四 关闭套接字
close(sockfd);
- 服务器端的调用序列
- 调用socket函数来创建套接字
- 调用bind函数绑定本地的地址和端口(familyportip);
- 调用listen()函数启动监听
- 调用accept函数从已经连接到队列中 提取客户连接
- 调用I/O函数与客户端进行通讯
- 调用close关闭套接字
//步骤一:创建socket
//创建在内核中;是一个结构体;
//AF_INET:ipv4
//sock_stream :tcp 协议;
sockfd=socket(AF_INET,SOCK_STREAM,0);
//步骤二:将socket和地址绑定;包括(ip。port等)
struct sockaddr_in serveraddr;
memset(&serveraddr,0,sizeof(serveraddr) );
//往地址中填入ip port internet地址足类型等
serveraddr.sin_family=AF_INET;//ipv4;
serveraddr.sin_port=htons(atoi(argv[1]));//port
serveraddr.sin_addr.s_addr=INADDR_ANY;//"192.168.0.1";//监听所有的网卡上面的客户端的链接请求;
if(bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr))<0)
{
perror("bind error");
exit(1);
}
//步骤三
//调用listen 函数启动监听 制定port监听;
//通知系统去接受来自客户端的链接请求;
//及其昂接受到的客户端请求放置到对应的队列中
//第二个参数: 指定队列的长度;
if(listen(sockfd,10)<0)
{
perror("listen error");
exit(1);
}
//步骤四:
//调用 accept函数从队列之中获得一个客户端的请求链接
//并且返回一个新的socket 描述符;针对客户端的;
//如果没有客户端链接,调用这个函数会阻塞,直到获得一个客户端的链接;
struct sockaddr_in clientaddr;
socklen_t clientaddr_len=sizeof(clientaddr);
while(1)
{
int fd=accept(sockfd,(struct sockaddr*)&clientaddr,&clientaddr_len);
if(fd<0)
{
perror("accept error");
exit(1);
}
//步骤五:利用I/O函数(write/read)
//和链接的客户端进行双向的通信;
out_addr(&clientaddr);
do_service(fd);
//步骤6 关闭socket;
close(fd);
}
最后
以上就是清秀时光为你收集整理的网络编程 1、TCP客户端服务端的编程模型的全部内容,希望文章能够帮你解决网络编程 1、TCP客户端服务端的编程模型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复