vb winsock 怎么同时传送图片和文本?

我用VB做了个小的聊天器,用winsock控件接收、传送文本。我又想在这个聊天器里面传送图片,可是如果这样,图片的接收就成了问题。文本的接收方式和图片的接收方式大有不同,文本直接接收过来,图片还要8K、8K地组装起来。而我以前编的代码只能用来接收文本,我也找到了接收、传送图片的代码,可是如果混起来接收,那么这个图片的二进制数据岂不是会被写进文本框中?请问大家如何区分发过来的数据是文本还是图片,如果是文本就按文本的接收,放在聊天记录中,如果是图片就按图片的接收,存为E盘中的a.bmp。这样如何区分文本与图片的接收?
如果方法好,我会附加很多分的,具体按情况而定。
1楼,这我想过,怎样做标志呢?又怎样删除这个标志?又怎样认出这个标志?
2楼的 贝儿dora ,请百度知道把他删除了
3楼,我不是这个意思。我是说怎样把文本和图片区别开来。

在传输数据中拿一位来做标志应该可以吧

--------------------------------------------

我没做过网络接收,就做过串口的,大概就是取出一字节数据,加个头加个尾,加个类型标志,一次传11位数据,接收这边接收之后就判断一下数据是否完整,要是完整就判断一下类型标志是个啥,然后把8位的数据位取出来存到对应的地方,再发一个成功的信号给发送方,然后那边再发下一串数据。。。
温馨提示:内容为网友见解,仅供参考
第2个回答  2009-01-15
你定义一个结构,结构前面定义命令标志位,还有数据区的数据长度,例如:
Public Type TSocketCMD
CMD_Flag as long ' 命令标识
CMD_Param_1 as long ' 命令参数1
CMD_Param_2 as long ' 命令参数2
Data_Len as long ' 数据长度,本次命令所传递的真实的数据的长度,该长度不包括命令头本身的长度
Data(1 to 8176) as byte ' 数据区
End Type
然后你可以定义若干命令常量

CMD_TEXT = 1001
CMD_IMAGE = 1002
CMD_FILE = 1003

等等,其实图片和文件用一个CMD_FILE就行,不是还有两个参数可以用吗!
具体实现就是根据不同的操作构建不同的TSocketCMD命令,大文件肯定得分片传输,并且传输完一次,就得等待接受成功的应答

请问VB.net下如何使用winsock udp协议发送图片 和接收图片并存为jpg...
winsock 发送图片,就是发送文件嘛。不过UDP协议每次最多只能发送8K,所以你要先读取文件,建立以个byte()数组 然后第一次发送是从数组的0-8100这个范围,下次再发送的时候将再从8101开始发送,长度仍未8100就可以了。用一个while 循环来判断文件有没有发送完成就行了。对于接收端,在接收的时候也是要...

vb里怎么通过winsock实现两台计算机的数据传输,,每台计算机一个程序...
.Bind 1001 '绑定到本地的端口上。End WithEnd SubPrivate Sub txtSend_Change()'在键入后立即发送文本。udpPeerB.SendData txtSend.TextEnd SubPrivate Sub udpPeerB_DataArrival _(ByVal bytesTotal As Long)Dim strData As StringudpPeerB.GetData strDatatxtOutput.Text = strDataEnd Sub ...

怎样通过WinSock传送图片
Winsock1.Connect "192.168.1.124" '设置要连接的计算机名称或IP地址 'IP改成要连接的IP Command1.Enabled = False End Sub Private Sub Command2_Click()Dim bytData() As Byte '接收图片 Dim PBag As New PropertyBag '图片信息 ReDim bytData(1 To Winsock1.BytesReceived) '接收图片大...

vb winsock怎么发图片
定义个byte数组,先读取图片文件到数组中,再将数组以byte形式发送就行了,明白?给个例子吧:先写上传送和接收文件的过程 Public Sub SendFile(FileName As String, WinS As Winsock)'FileName 为要传送的文件名,WinS为发送文件的WinSock控件 Dim FreeF As Integer '空闲的文件号 Dim LenFile As ...

怎样用VB编写一个在局域网中能同时传输多个文件的程序?
如果是指定的共享文件夹,你可以使shell语句,调用一个copy。也可以使用filessystemobject对像的拷贝命令来做。要知道,如果是已知的共享文件夹的话,你实际就等于在做一个本地移动或复制文件的操作。如果待传输文件是提前无法预知的,就再挂一个dialog控件就可以了 ...

vb winsock 图片文件传输 代码
cli.SendData B ', vbByte '发送整个文件,字节方式 ser 接收文件端 每次只能接收8000多字节,要分多次接收 Private Sub ser_DataArrival(ByVal bytesTotal As Long)dim Bf() as byte ser.GetData bf(), vbByte + vbArray ' 接收文件 Dim l As Long Open App.Path & "\\a.bmp" Fo...

如何编写一个 能够传送文件 的 VB程序
首先,在VB中要传送字符串,你可以这样写:Dim strData As String strData = "Test"Winsock1.SendData strData 但是如果你传送的二进制文件,你还能用String变量来存放吗?从理论上分析是不行的,我也做了实验,确实是不行的。文件虽然可以传,但是接受的文件和发送的不一样,原因可能是二进制文件里...

VB WINSOCK 实现文件传输
可以在senddata的时候在数据前加入标识,如将fn=“fn [文件名]”,接收时可以用left函数提取标识,如Winsock1.GetData fn后 a = left(fn,2) if a = “fn" then ……

急~!!! 如何用VB实现局域网内传送文件
首先把Server主机的一个Winsock控件设置TCP协议及使用的端口号,调用.listen方法。Client主机的Winsock控件设置服务主机的IP地址和端口号,调用Connect方法。服务主机的侦听Winsock会收到连接请求,使用Accept(另一个Winsock控件Name)来响应,完成连接的建立。服务端程序读文件,通过Send方法传送数据,客户端程序有...

高分:VB 调用INET用POST方式发图片到服务器。
winsock 可以UDP协议啊 呵呵 图片是要转为一个缓存的二进制文件 在发送 然后取出 将其内容全部读入一个byte类型的数组中,客户端代码如下:dimmyfile()asbyte dimpositionaslong open"filename"forbinaryas#1 position=0 dowhilenoteof(1)position=positon 1 redimpreservemyfile(1toposition)get#1,,my...

相似回答
大家正在搜