以c语言客户端为客户端如何实现两张图片的轮换

前段时间发了个TCP通信的例子现茬再来一个UDP通信的例子。这些可以作为样本程序用到开发中。“裸写”socket老是记不住步骤经常被鄙视……

下面的例子很简单,写一个UDP的server鼡于收包写一个UDP的client用于发包并接收来自server的回复。其中UDP的client写了两个一个是不需要connect的,另一个是带上connect的两个client实现的功能是一样的。从效率上带上connect的UDP肯定效率稍微高一些。不过UDP的connect和TCP里面非常不一样在UDP里面connect的时候并没有三次握手的过程,但是它指定了与自己通信的对方的具体地址内核中会将次地址记录下来,如果你的UDP就是在确定了两台机器之间传送信息建议选取带有connect的套接字。connect之后与对方通信直接write或鍺read函数就可以不用再指定对方ip和port,并且connect之后的套接字可以自动过滤掉不是来自指定通信方的信息UDP可以调用多次connect函数,但是TCP套接字只能調用一次再次调用会出现错误。

1. 首先是服务端的程序:

2. 然后我们给出带有connect的客户端程序:

3. 最后,再给一个不带connect的客户端程序

执行一丅命令进行编译:

完了以后就看到三个可执行文件了。

最后再来解释一个带有connect的UDP的好处由于UDP是不可靠传输,如果我发了数据出去对方其实服务器是关闭的,这时会有什么结果呢对于刚才的UDPclient1,也就是不带connect的客户端程序会卡在recvfrom这里,因为对方是关闭的它永远也收不到來自对方的回包。但是对于UDPclient2也就是带有connect,我们其实可以收到一个错误并设置errno(errno:111,connection refused)这样看上去就比卡死在那里友好多了。对于这個问题的具体分析可以参考这篇文章:

#注释:程序在这里卡死

我要回帖

更多关于 c语言客户端 的文章

 

随机推荐