有关SOCKET的几个小问题(100分)

  • 主题发起人 主题发起人 biyesheng
  • 开始时间 开始时间
B

biyesheng

Unregistered / Unconfirmed
GUEST, unregistred user!
1、ClientSocket控件的ClientSocket.Socket.SendBuf(buffer,i)函数
(buffer为一数组)如何用API函数SEND()来代替?

2、API函数(Connect())做Client端与SERVER端进行通信,在Client端退出时SERVER端总
是报错(Asynchronous socket error 10053),我想是Client端没有正常释放什么东西,
请问我要释放什么,如何释放。

3、如何在程序里手动调用ClientSocket控件的OnRead方法(主要是OnRead的参数不会给)


4、我想调用API函数通过TCP/IP协议与一外设通信,该外设可能只能接收BYTE类型的数据,
我该如何把一字符串(其实是十六进制的数据)转化为它认识的类型?比如我直接给它"a"
它认成61,"b"认成62。
 
1.把Socket.SendBuf(buffer, i)的源代码Copy到你的程序中
2.好久没搞,忘了
3.看看OnRead的类型,搞一个同类型的函数就OK了。
4.这得具体看你的设备是怎样识别数据的,有什么手册之类的。
 
1.Socket.SendBuf(buffer, i)
那个BUFFER是变量,不是数组
2,你服务器在onerror里应该释放客户资源,不过我是用线程模式,
3,这个是 OnRead是系统发消息的时候才有onread事件,你手动去调用,如果
没有收到数据会出错的,
4,这个你直接写个结构就OK了
 
TO 张无忌:
1、BUFFER是变量,是我搞错了,但是Socket.SendBuf(buffer, i)中的I该如何确定?
2、释放客户资源的语句该怎么写?
3、手动调用OnRead事件的参数我不知该怎么写。我想手动调用试试效果。
4、已解决。
 
我写了一个Socket API实现TCP的小程序,可以参考一下:http://www.playicq.com/dispdoc.php?t=27&id=2148
 
to zw84611:
你好你提供的网址我打不开(第一次能打开但没有图片再刷新就怎么也出不来了)
我的信箱是:wxfstudent@263.net可否寄到这里来?
 
1.定义buffer为array of char,i为你想要发送的字节数,len为实际发送的字节数
len := Socket.SendBuf(buffer,i)
检查len和i,移动buffer指针,可确保所有数据全部发送完毕
2.客户端要退出应先向服务器发一个退出命令,再断开连接
服务端收到退出命令后,主动断开连接
直接断开属于异常情况(如网络故障等)
3.OnRead用于异步接收数据
当服务器端Socket.Write(buf,..)时,客户端Socket会触发OnRead,在事件
句柄处理函数中 用Socket.Read(buf,...)可以读出服务器端写入的数据
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部