关于Socket通讯求助
现在在做一个GPRS通讯的DLL,里面有一个连接点的信息数据结构:
DtuClientsStruct = record //DTU连接信息
soc: TSocket; //Socket
zid: Integer; //ID
add: sockaddr_in; //IP
todaytime: TDateTime; //登录时间
refreshDT: TDateTime; //刷新时间
end;
还有个保存数据的数据结构:
DtuDataStruct = Record //DTU数据域
add: sockaddr_in; //IP
m_modemId: Int64; //ID号
m_recv_time: TDateTime; //接收时间
m_data_buf: Array[0..MAX_RECEIVE_BUF] of Byte; //数据缓存
m_data_len: Word; //数据长度
m_data_type: Byte; //数据类型
m_end_pointer: Integer; //
end;
Socket连接好后我listen,并有连接线程在运行,有连接过来就会增加一个Tlist的DtuClientsStruct ,保存soc、
add及连接时间,当这个连接建好后收到的数据会增加一个TList的DtuDataStruct ,保存收到的数据、长度等,
但是发现一个问题,一旦网络异常导致重连,这样一来accept返回的TSocket以及IP地址都会变,这样一来上面
两个结构就没有一个可以关联的东西了,我是感觉我的这个设计有问题,但是因为第一次做不知道怎么很好的
来解决这个问题,请教熟悉这方面操作的朋友,我这两个结构怎么来关联?或者怎么设计比较合理?
[解决办法]
建立一个session机制,如果客户端连接时候没有session那么请求服务器端分配一个session,这个session作为一个字段保存在DtuClientsStruc中,断线重连后客户端首先发送这个session,如果服务器端上存在那就可以获取相应数据。
[解决办法]
两个结构的ID是作什么用的?
[解决办法]