我的新作品: MP3搜索者! V1.0 请大家给点意见!!!! (50分)

  • 主题发起人 主题发起人 paf
  • 开始时间 开始时间
是不是用HTTP控件向百度搜索MP3提交歌名然后得到结果啊?
 
我想做一个来着,晚了^_^。
 
我也想做这样一个东东:(
 
加我QQ:28972303

留个名
 
我用D6的tserversocket / tclientsocket 控件,servertype采用:stNonBlocking ,做一个TCP/IP的通信软件。

我的客户端是n个GPRS 终端,所以不用管它。可是,终端它可能有不可知的中断,比如突然断电等情况,所以这里就有一个问题:当终端不可知的中断的情况下,主站是肯定不知道的,而且,socket 连接的数组也不会减少的,也就是中断的SOCKET 套接字不能及时的删除,那么主站它会定时下达指令时,也会向这个已中断的SOCKET发指令,所以这时发送的指令是无法返回的。请问我要如何维护SOCKET 的CONNECTION[K],就是要删除数组中的某个数;

serversocket.socket.connection[k].close;
以上这句是用来关闭一个连接,但不是用来删除数组中的一个数;


************************

//统计在线的终端数:
statusbar1.Panels.Items[5].Text:= inttostr(serversocket1.socket.activeconnections);


用以上这句可以统计在线有套接字数,也就是有多少可用的SOCKET,但问题是假设目前我只有3个测试点,可能是中断后再登录上来,所以统计出来有5或者更多个。请问我要怎么正确维护socket的connection 的数组啊?
也就是我有几个终端,就应该有几个SOCKET。

***********************

我还用ListView1,来记录当前登录的终端,ListView1记录有如下几个项目:
序号、GPRS ID 号、终端IP 地址、端口号



var
newitem:tlistitem;
-----------------------------

//登录的子站
newitem:=listview1.Items.Insert(listview1.Items.Count); //插入的位置;
newitem.Caption:=inttostr(listview1.Items.Count-1);
newitem.SubItems.Add(gprsid);
newitem.SubItems.Add(socket.RemoteAddress);
newitem.SubItems.Add(inttostr(socket.RemotePort));



请问我要如何才能保证有效的SOCKET与LISTVIEW1中记录的一致?这样才能正确通信。



谢谢!


对了,我的网名叫:solonet

qq:28972303

email:solonet@163.net
 

Similar threads

后退
顶部