温故而知心 - 网络编程中的socket

背景

从开始写网络的一些编程,只是在上学写过纯socket的代码,很多时候都在用别人封装的工具,纯粹的socket都快忘光了,这里再学习下。

socket服务器端的基本过程

  • 1.创建服务器socket
    如:
//创建用于internet的流协议(TCP)socket,用server_socket代表服务器socket
    int server_socket = socket(PF_INET,SOCK_STREAM,0);
  • 2.将socket和socket的地址结构(ip+port)绑定在一起
    如:
//把socket和socket地址结构联系起来
bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr))
  • 3.监听创建的socket
    如:
listen(server_socket, LENGTH_OF_LISTEN_QUEUE) 
  • 4.接受客户端的请求
    如:
while(1) {
        //接受一个到server_socket代表的socket的一个连接
        //如果没有连接请求,就等待到有连接请求--这是accept函数的特性
        //accept函数返回一个新的socket,这个socket(new_server_socket)用于同连接到的客户的通信
        //new_server_socket代表了服务器和客户端之间的一个通信通道
        //accept函数把连接到的客户端信息填写到客户端的socket地址结构client_addr中
        int new_server_socket = accept(server_socket,(struct sockaddr*)&client_addr,&length);
}

socket客户端的基本过程

  • 1.绑定一个客户端socket
//创建用于internet的流协议(TCP)socket,用client_socket代表客户机socket
    int client_socket = socket(AF_INET,SOCK_STREAM,0);
  • 2.绑定本机的地址和端口(不是强制需要这一步)
bind(client_socket,(struct sockaddr*)&client_addr,sizeof(client_addr))
  • 3.设置访问的服务器地址和端口
inet_aton(ip_address,&server_addr.sin_addr)
  • 4.向服务器发起socket请求
connect(client_socket,(struct sockaddr*)&server_addr, server_addr_length
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 大纲 一.Socket简介 二.BSD Socket编程准备 1.地址 2.端口 3.网络字节序 4.半相关与全相...
    y角阅读 7,357评论 2 11
  • 研究IPv6 socket编程原因: Supporting IPv6 in iOS 9 WWDC2015苹果宣布在...
    li大鹏阅读 12,132评论 7 15
  • socket通信原理 socket又被叫做套接字,它就像连接到两端的插座孔一样,通过建立管道,将两个不同的进程之间...
    jiodg45阅读 4,858评论 0 1
  • 一、基本socket函数Linux系统是通过提供套接字(socket)来进行网络编程的。网络的socket数据传输...
    WB莫遥燚阅读 5,356评论 0 0
  • 我在这世上走着,记忆是我唯一的行李。 想写些有点带刺的文字,就好像只有那刺不会被岁月侵蚀; 想做些带刺的事,就好像...
    可可不凡阅读 2,801评论 1 24

友情链接更多精彩内容