VB通信程序急

来源:百度知道 编辑:UC知道 时间:2024/05/13 14:20:06
我要做一个能收多点发来的数据的接收端程序,发来的数据类型是十六进制数
请问发何做
用wincosk有什么协议
我做了一个发字符串的,跟聊天程序差不多,可是一用外网IP就收不到了,程序要求收十六进制的我定义了一个byte数组,发了,这面有byte收,可是出错了我只有九分了,全送上了,五分少了一点,可是那四给不了,晕
发来的数据是十六进制的

哥们 看你这么急切 我就帮你一次吧
1.做多对一 可以用TCP协议,可以保证数据传输的准确性 也不用做太多封包和校验之类的事情 TCP是基于流的 因此不要天真的以为你一次性发了多少数据 对方就一次性收到了多少
2在外网的话,要求一方有固定IP 鉴于你这种情况 可以让服务端ip固定 方法有两种1)申请静态IP,但是不太合算2)申请动态域名并解析到服务端IP 这样客户端就可以由这个ip连接过来
3)是不是16进制不重要 转换下就行了 传输的时候用字节数组
字符串转换为字节数组
dim Buffer() as byte
Buffer="字符串..."
OK 先说这么多 你消化一下吧 建议刚开始的时候做一对一模式 多对一还有许多问题要解决 比较麻烦

接收的数据一定是byte型才能用吗,你换成别的,比如string,long之类,然后强行转换成十六进制的不行吗?

数据转换

我觉得UDP协议好些。TCP得建立连接,这样的话在接收端就得加载多个Winsock。要是用UDP的话一个就可以了。但是这样得自己动手设计保证数据传输正确性的机制

补充:我没有做过十六进制的,但是我估计这个不是大问题,应该用楼上说的办法就可以了。至于内网,外网的我用TCP做过。这要求有一个服务器,若干个客户端,且满足
1 服务器内网 客户端内网
2服务器外网 客户端内网
3服务器外网 客户端外网
这样能保证客户端能找到服务器 要是服务器在内网,客户端在外网就得的在内网连接外网的路由器上设置端口映射。这个你在网上查查,有很多介绍的。

你在百度百科理看看 winsock的介绍吧。