关闭

socket的流编程和数据报编程

472人阅读 评论(0) 收藏 举报

     socket的基本概念:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。(百度百科)

     socket中传输数据时有两种套接字类型:流套接字和数据报套接字。

     1.流套接字编程解析和编程思路

        解析:服务器和客户端进行通行时,首先各自必须建立自己的套接字,建立连接后,对响应的套接字进行“写”和“读”操作,从而实现两者之间的数据传输。

       

        编程思路:  (1)在服务器端进程建立流套接字。 

                                     在选择网络类型时一般是AF_INET, 它代表因特网通信的意思. 在套接字类型中选择SOCK_STREAM,它表示流套接字。服务器端进程要优先于客户端启动。

                            (2)绑定本地地址到建立的套接字上,从而标识该套接字。

                                     注意标识绑定套接字的句柄、地址、长度等,便于客户端连接。在c语言中,用sockaddr_in来标识tcp/IP下的协议下的地址,这样的好处是能够将

                                      socketaddr_in强转换成sockaddr的结构。  

struct sockaddr_in {
__uint8_t	        sin_len;   
</pre></blockquote></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><pre name="code" class="objc">sa_family_t	sin_family;//设置协议簇,设置成AF_INET,标识为网络通信
</pre></blockquote></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><pre name="code" class="objc">in_port_t	        sin_port;  //指定服务端口
</pre></blockquote></blockquote><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><blockquote style="margin:0 0 0 40px; border:none; padding:0px"><pre name="code" class="objc">struct	      in_addr sin_addr;//无符号长整型,将IP地址保存成一个4字节的数,选择INADDR_ANY允许服务器监听你主机计算机上每个应用网络接口上的客户机活
  
char	                sin_zero[8];////要传递的由协议决定的地址长度;填充字段,使之与sockaddr结构长度一样
};

                           (3)让套接字处于监听状态,而且能够接受客户端连接请求。

                           (4)客户端进程也调用socket的函数创建客户端套接字。

                           (5)客户端面向服务器端发出连接请求,建立一端的连接。

                           (6)服务器接受请求后,被堵塞服务进程函数会产生一个新的套接字和客户端套接字,并向客户发挥接受信号。

                           (7)当客户端的套接字收到服务器的接收信息,确定后客户端和服务器端建立连接,从而可以进行数据的“读” 和 “写” 操作。

                           (8)关闭套接字,释放资源。

还没有写数据报,等等

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:45685次
    • 积分:1584
    • 等级:
    • 排名:千里之外
    • 原创:114篇
    • 转载:29篇
    • 译文:0篇
    • 评论:2条
    最新评论