
网络编程
xyj0663
这个作者很懒,什么都没留下…
展开
-
windows 下select方法读取socket
网络连接上之后一般都会保存一个fd,相当一个设备描述符,socket在connect()后会有这个,我用的是CSocket类,开始没找个这个东西,后来才发现,这是一个int类型的变量,最后才发现名字叫m_hSocket,我的目的的要写一个心跳维护程序,在判断有无东西可接就行,如果没有东西可接说明网络连接有问题,5秒钟后跳出. 下面的简单的程序:UINT _KeepHeartLiving原创 2009-01-18 11:41:00 · 719 阅读 · 0 评论 -
线程共用同一CSocket
每个socket在创建成功之后都有一个fd,原先以为只要把主线程的fd传递给子线程就没问题,CSocket的fd其实就一个int m_hSocket,可后来发现fd传进来的,也对了,但在子线程中send()和recv()有问题,所以这样还是不行的.后来才发现,在次线程中不能直接操作主线程的 CSocket对象,要在子线程起来前把主线程的handle传递给子线程,在次线程使用一个CSocket类原创 2009-02-26 16:51:00 · 759 阅读 · 0 评论 -
socket非阻塞
老问题了,一直没写出来,其实这在上次写线程共用socket时就遇到了,在线程中发送东西还看不出来,但要是接收东西就要用得到了,你总不能让他一直在那等着接收吧.下面是代码fd_set fdR, nfdR; //定义fd FD_ZERO(&fdR); //清0 FD_SET(s,&fdR); //关联fd nfdR = fdR; while(true) { fdR = nfdR原创 2009-05-12 14:41:00 · 747 阅读 · 0 评论 -
UDP实现简单的超时重传
http://blog.youkuaiyun.com/duckzyf7758/archive/2007/09/14/1784903.aspx众所周知~UDP是一个无连接协议,因此靠它来传输的话是不可靠的,即使是数据包丢失也不会报错。但是,在编写Linux上的socket程序时,却可以用简单的方法,在应用层实现超时重传,让UDP可靠一些。(这次说的方法最好用于两个程序间通信——也许只能用于两台机器通信)转载 2009-12-11 23:10:00 · 3122 阅读 · 0 评论