socket编程
smilestone322
通过软考: 系统架构设计师和信息系统项目管理师考试
工业相机和DVR开发,熟悉windows驱动开发,camera sdk开发,3D摄像头sdk开发。
联系方式:smilestone322@sina.com
展开
-
unix socket function
http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=73226 转自 Unix网络API (2008-06-05 13:02) 分类: 软硬件tcpip﹑unix通信应用工具等 索引:1.字节序函数2.字节操作函数3.地址转换函数4.readn、writen和readline5.测试转载 2012-02-14 13:58:41 · 1199 阅读 · 0 评论 -
socket常见问题----《四》
1) 服务器处在SYN_RECV,造成客户端在也连入不了服务端;原因是:没有收到客户端的Ack,客户端支持可能已经显示时Established 状态,但这个状态也只是一瞬间,马上会断开;B收到连接释放报文段后就立即发送确认,然后就进入close-wait状态,此时TCP服务器进程就通知高层应用进程,因而从A到B的连接就释放了。此时是“半关闭”状态。即A不可以发送原创 2013-03-21 22:31:16 · 1410 阅读 · 0 评论 -
socket常见问题---《伍》
1)客户端处在FIN_WAIT_1状态,服务器处在SYN_RECV状态;这个问题也是我最近在实际中碰到的问题,socket连接和断开流程已经前面的几节中讲到了,大家可以参考前面的内容;怎么出现这样的问题呢?原因是客户端连接服务器,但是服务器限制了客户端的接入数,它只listen没有accept动作,造成客户端每次connect是成功的,但是连接就是建立不起来,客户端又做了,原创 2013-03-21 22:37:07 · 1355 阅读 · 0 评论 -
socket的常见问题---《六》
1) 在线程中碰到socket阻塞怎么办?比如socket服务器accept阻塞了,造成线程不能顺利退出?解决办法通过socket的KeepAlive机制; 2) 如何检测socket连接是否断开或异常?1)通过心跳机制; 2)KeepAlive机制; 3)Socket 常用的属性SO_REUSEADDR:1、 当有一个有相同本地地址原创 2013-03-21 22:38:12 · 1607 阅读 · 4 评论 -
udp socket 调用connect的作用是什么
一般udpsocket 是不用调用connect函数的,那么在什么时候需要调用connect呢,或者说connect的作用是什么呢?套接字类型 write/send 不指定目的地址的sendto 指定目的地址的sendtotcp套接字转载 2013-04-03 22:11:56 · 1769 阅读 · 2 评论 -
P2P 之 UDP穿透NAT的原理与实现(附源代码)
P2P 之 UDP穿透NAT的原理与实现(附源代码)原创:shootingstars参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。首先先介绍一些基本概念转载 2013-07-10 19:02:02 · 1372 阅读 · 0 评论 -
如何清除socket的CloseWait;
如题:原创 2013-11-08 10:59:35 · 1645 阅读 · 0 评论 -
win7下socket connnet连接问题;
win7下socket connect,用非阻塞连的时,发现设置超时3秒,怎是连接失败,但是使用阻塞的原创 2014-11-11 09:46:54 · 2157 阅读 · 0 评论 -
windows 下socket recv 阻塞接收速度慢--send 阻塞发送慢
socket recv 阻塞速度很慢,mjpeg码流,jpeg一帧数据大约100k,但是接收时间需要93ms左右,有没有大侠知道怎么优化recv的接收的,指点下,电脑配置,cpu 2.6 奔腾双核,2G内存。 解决办法: 发现recv阻塞了,没有数据到来,在recv前使用select,后,recv 接收就不耗时间了。原创 2012-06-23 18:39:25 · 5344 阅读 · 0 评论 -
socket udp 广播 在有3G网卡拨号上网后,存在不能收到对端的广播包
今天测试的时候发现,socket udp 广播 在有3G网卡拨号上网后,存在不能收到对端的广播包,很原创 2014-11-02 10:33:14 · 1120 阅读 · 0 评论 -
使用socket传输jpeg图片,传输若干帧后发现很卡,有时传输一帧图像需要几秒钟
服务端不断往客户端传送jpeg图片,客户端收到jpeg后,给服务端应答,测试发现原创 2014-10-29 09:17:25 · 4710 阅读 · 0 评论 -
socket常见问题---《三》
1) 如何让socket不进入Time_Wait状态在高并发短连接的server端,当server处理完client的请求后立刻closesocket此时会出现time_wait状态然后如果client再并发2000个连接,此时部分连接就连接不上了,用linger强制关闭可以解决此问题,但是linger会导致数据丢失,linger值为0时是强制关闭,无论并发多少多能正常连接上,如果非0会发原创 2013-03-21 22:26:45 · 1280 阅读 · 0 评论 -
socket编程中常见问题--《二》
1) socket 客户端 FIN_WAIT_2,而设备端显示CloseWait这个原因是服务器端没有及时CloseSocket;下面讲解下socket的断开流程:TCP报文段首部格式:序号:本报文段所发送的数据的第一个字节的序号。确认号ack:期待收到对方下一个报文段的第一个数据字节的序号确认ACK:占1位,仅当ACK=1时,确认号字段原创 2013-03-21 22:25:32 · 1564 阅读 · 0 评论 -
windows socket编程和linux socket编程的异同
windows socket编程和linux socket编程的异同 待续原创 2012-02-19 15:15:18 · 1000 阅读 · 0 评论 -
socket server select模型值得注意的地方
1)多个客户端连接socket服务器,怎么区分是哪个客户端连接的,换句话说,socket 怎么和客户端的ip一一对应?SOCKADDR_IN clientAddr; int socketLen = sizeof(SOCKADDR_IN); m_pListenSocket->Accept(*pClient,(SOCKADDR*)&clientAddr, &socketLen); un原创 2012-07-13 11:09:26 · 1136 阅读 · 0 评论 -
socket 设备自动重启/断电 recv send阻塞的解决办法
socket 设备自动重启/断电 recv send阻塞的解决办法 (1)使用socket的KeepAlive机制,当突然断电后,recv函数阻塞超时退出,不会造成程序死锁,或者程序一直阻塞在recv函数的问题,方法如下: // BOOL bKeepAlive = TRUE; nRet=setsockopt(listen_sock, SOL_SOCKET, SO_KEEP原创 2012-08-13 18:50:20 · 2590 阅读 · 0 评论 -
如何判断socket是否已经断开和防止外部攻击,只连接不传输数据
如何判断socket是否已经断开和防止外部攻击,只连接不传输数据原创 2012-09-07 18:59:35 · 1708 阅读 · 0 评论 -
多网卡或存在虚拟机的情况,socket广播包发送会出现问题
socket绑定时,不知绑定到那个网卡,然后发送广播包后,如果设备端只针对这个网卡的广播包进行回复,回复包收不到,造成设备找不到。 现象:有时包发送到了不是连接我们设备的那个网卡,有时根本就没有发送广播包,从代码上看sendto函数的返回值是对的,但是使用wireshark就抓不到他的包! 定位:windows socket 广播包时,如果要往多个网卡发送广播包,必须依次对各个网卡原创 2012-06-03 21:12:57 · 3691 阅读 · 2 评论 -
socket 客户端在什么情况下需要bind
常规情况下:服务器的socket描述府一定需要绑定 把特定的地址和端口号绑定到服务器socket描述符上,不过客户端的socket一般不需要绑定,因为一般c/s通讯过程都是服务器端侦听 客户端连接,所以客户端连接的时候必须知道服务器的地址,连接上 ,也就可以通讯,所以没有必要绑定客户端的地址。但是客户端连接的地址必须是服务器的地址和端口。至于服务器accept 以后 返回的是新的描述符 ,原创 2012-12-28 22:26:05 · 4681 阅读 · 3 评论 -
socket tcp与udp的区别
socket tcp连接常规流程:服务器端:socket-->bind-->listen-->accept->recv(send)-->closesocket客户端:sokcet->connect->send(recv)-->closesocket可以参考:http://atu82.bokee.com/4667655.htmlUdp socket 常规流程原创 2012-12-28 22:24:41 · 1481 阅读 · 0 评论 -
socket 服务器端编程常见问题
1)当一个客户端sokcet长时间不发送数据时,服务器端如何将这个sokcet 踢掉,即closesocket;2)socket KeepAlive 机制超时时,select会返回什么状态, Select中的该sokcet能用recv读到什么东西?3)如何踢掉非法的攻击,即只连接服务器,不发送数据,造成服务器端的socket耗尽;4)如何判断客户端发送的是非法数据,尽早的过滤掉非法数据原创 2012-09-13 19:34:41 · 1533 阅读 · 1 评论 -
如何解决socket TIME_WAIT 资源耗尽问题
如何解决socket TIME_WAIT 资源耗尽问题,其实socket TIME_Wait是断开连接的必经阶段,默认是2倍MSL时间 如何让socket不进入Time_Wait状态在高并发短连接的server端,当server处理完client的请求后立刻closesocket此时会出现time_wait状态然后如果client再并发2000个连接,此时部分连接就连接不上了,用lin原创 2012-09-08 09:07:11 · 3841 阅读 · 1 评论 -
socket编程中常见问题--《一》
1) 在socket有自动重连机制的时候,如果在一个线程中实现socket错误或断线自动重连时,注意将socket设置为非阻塞的,不然当程序退出时,线程可能阻塞在connect函数,造成程序不能及时退出; 原理上是这样的:1.建立socket2.将该socket设置为非阻塞模式3.调用connect()4.使用select()检查该socket描述符是否可写(注意,是可写)原创 2013-02-28 21:04:18 · 2141 阅读 · 1 评论 -
TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系 .
转自:http://blog.csdn.net/ordeder/article/details/17240221 1. TCP发送接口:send() TCP发送数据的接口有send,write,sendmsg。在系统内核中这些函数有一个统一的入口,即sock_sendmsg()。由于TCP是可靠传输,所以对TCP的发送接口很容易产生误解,比如sn = send(...);转载 2015-06-04 14:22:36 · 3350 阅读 · 0 评论