socket的流编程和数据报编程

     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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值