有关Winsock接收数据的问题。

凌波微搏 2003-06-02 01:30:36
现在我在做一个PDA中eVB开发的客户端和PC中VB开发的服务端进行通讯,主要是使用winsock进行操作,现在遇到两个问题。
1、我每一次从PDA传送一个字符串到PC上,接收数据的时候确不是一次性收下来的,比如"[hello]world"字符串,经常是第一次接收到"["然后后面的整个下来,那么,要如何判断一次传输结束了呢?不知道是否有好的办法,我的每一次传输的内容都不大,在8K之内的。
2、我传送的字符串中含有中文,但是,从PDA传输到PC的服务器端就出现了乱码,这样该如何解决呢,看了很多关于winsock资料,还是不得其解,有帖子说用byte数组,嗯,不知有没有谁有过这个经验,可否给点稍微详细的思路和过程。
非常感谢。
...全文
63 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
凌波微搏 2003-06-04
  • 打赏
  • 举报
回复
再顶一下。
凌波微搏 2003-06-04
  • 打赏
  • 举报
回复
嗯,不知道一开始发送那个长度是采用什么办法发送的。
rappercn 2003-06-02
  • 打赏
  • 举报
回复
关于vbtounicode的问题,不好意思,不常用,一时没想起来怎么写

:)
至于evb,没办法,我一点都不懂
凌波微搏 2003-06-02
  • 打赏
  • 举报
回复
to:rappercn(rapper)
很可惜,evb不支持strconv方法,所以,这个方法行不通了。。。
看来得想另外的办法。
凌波微搏 2003-06-02
  • 打赏
  • 举报
回复
嗯,对于第二个问题,似乎strconv(string,vbtounicode)中vbtounicode好像是没有的哦,应该是vbunicode吧,对于这个方法的好坏现在还在测试之中。希望能够有更多的方法。
suntt 2003-06-02
  • 打赏
  • 举报
回复
楼上办法很好
rappercn 2003-06-02
  • 打赏
  • 举报
回复
1。发送前先告知接收方总长度,开始发送后,接收方统计收到的长度,总和等于总长度的时候说明完成了。
2。你试试发送之前strconv(string,vbfromunicode),然后接收方接收后strconv(string,vbtounicode)
一、WinSock简介 Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX操作系统开发的网络通信接口,随着UNIX的广泛使用,Socket成为当前最流行的网络通信应用程序接口之一。20世纪90年代初,由Sun Microsystems,JSB,FTP software,Microdyne和Microsoft等几家公司共同定制了一套标准,即Windows Socket规范,简称WinSock。 VB编写网络程序主要有两种方式:1.winsock控件 2.winsockAPI 二、WinSock控件的使用 1.WinSock控件的主要属性 LocalHostName属性 本地机器名 LocalIP属性 本地机器IP地址 LocalPort属性 本地机器通信程序的端口(0<端口<65536) RemoteHost属性 远程机器名 RemotePort属性 远程机器的通信程序端口 Protocol属性 通过Protocol属性可以设置WinSock控件连接远程计算机使用的协议。可选的协议是TCP和UDP对应的VB的常量分别是sckTCPProtocol和sckUDPProtocol,Winsock控件默认协议是TCP。注意:虽然可以在运行时设置协议,但必须在连接未建立或断开连接后。 SocketHandle属性 返回当前socket连接的句柄,这是只读属性。 RemoteHostIP属性 属性返回远程计算机的IP地址。在客户端,当使用了控件的Connect方法后,远程计算机的IP地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest事件后,远程计算机(客户端)的IP地址就赋给了这个属性。如果使用的是UDP协议那么当DataArrival事件后,发送UDP报文的计算机的IP才赋给了这个属性。 ByteReceived属性 返回当前接收缓冲区中的字节数 State属性 返回WinSock控件当前的状态 常数 值 描述 sckClosed 0 缺省值,关闭。 SckOpen 1 打开。 SckListening 2 侦听 sckConnectionPending 3 连接挂起 sckResolvingHost 4 识别主机。 sckHostResolved 5 已识别主机 sckConnecting 6 正在连接。 sckConnected 7 已连接。 sckClosing 8 同级人员正在关闭连接。 sckError 9   错误 2.WinSock主要方法 Listen方法 方法用于服务器程序,等待客户访问。格式:Winsock对象.listen Connect方法 用于向远程主机发出连接请求。格式:Winsock对象.connect [远程主机IP,远程端口] Accept方法 用于接受一个连接请求。格式:Winsock对象.accept Request ID Senddata方法 用于发送数据。格式:Winsock对象.senddata 数据 Getdata方法 用来取得接收到的数据。格式:Winsock对象.getdata 变量 [,数据类型 [,最大长度]] Close方法 关闭当前连接。格式:Winsock对象.close Bind方法 用Bind方法可以把一个端口号固定为本控件使用,使得别的应用程序不能再使用这个端口。 Listen方法Listen方法只在使用TCP协议时有用。它将应用程序置于监听检测状态。 Connect方法 当本地计算机希望和远程计算机建立连接时,就可以调用Connect方法。Connect方法调用的规范为:Connect RemoteHost,RemotePort Accept方法 当服务器接收到客户端的连接请求后,服务器有权决定是否接受客户端的请求。 SendData方法当连接建立后,要发送数据就可以调用SendData方法,该方法只有一个参数,就是要发送的数据。 GetData方法 当本地计算机接收到远程计算机的数据时,数据存放在缓冲区中,要从缓冲区中取出数据,可以使用GetData方法。GetData方法调用规范如下:GetData

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧