winsock 发送图片,就是发送文件嘛。
创新互联致力于成都网站制作、成都做网站,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择创新互联,就选择了安全、稳定、美观的网站建设服务!
不过UDP协议每次最多只能发送8K,所以你要先读取文件,建立以个byte()数组 然后第一次发送是从数组的0-8100这个范围,下次再发送的时候将再从8101开始发送,长度仍未8100就可以了。用一个while 循环来判断文件有没有发送完成就行了。对于接收端,在接收的时候也是要用一个循环来写文件,前提是你必须先把要发送的文件的长度告诉接收端。说的够详细了吧!
我理解你
我写过图片网络传输的和你要求的一样
为了不把图片写到硬盘 又从硬盘读取
而直接保存图片内存流 进行网络传输
从网络读取的图片byte数组转成图片代码如下
Dim mStream As New IO.MemoryStream
mStream.Write(b, 0, b.length) '这里b就是你的一维数组了
Dim Img As New Bitmap(mStream)
mStream.Close()
mStream.Dispose()
下面是把图片保存到一维数组的方法
Dim Stream As New IO.MemoryStream
im.Save(Stream, System.Drawing.Imaging.ImageFormat.Jpeg)
im = Nothing
Stream.Flush()
Dim b As Byte() = Stream.ToArray
Stream.Dispose()
我正在用呀,没有任何问题!你的设置可能有问题!
Private Sub Command4_Click()
If Combo1.Text = "" Then
MsgBox "请您输入转换格式!!", 48, "提示信息"
Exit Sub
ElseIf Text2.Text = "" Or Text3.Text = "" Then
MsgBox "请选择转换前和转换后的文件路径!!", 48, "提示信息"
Exit Sub
Else
Me.MousePointer = 11
Command4.Enabled = False
Dim i, j, w, h, w1, h1, k As Integer
w = Picture1.Width
h = Picture1.Height
w1 = w / 15
h1 = h / 15
Picture2.Width = w
Picture2.Height = h
Picture1.Scale (0, 0)-(w1, h1)
Picture2.Scale (0, 0)-(w1, h1)
For i = 1 To w1
For j = 1 To h1
Picture2.PSet (i, j), Picture1.Point(i, j)
Next j
Next i
Picture2.Picture = Picture2.Image
SavePicture Picture2.Image, Text3.Text "." Mid(Combo1.Text, 3, Len(Combo1.Text) - 1)
MsgBox "格式转换成功完成!!", 64, "提示信息"
Command4.Enabled = True
Me.MousePointer = 0
End If
End Sub
Private Sub Command2_Click()
On Error GoTo x
DHK1.Filter = "所有文件(*.*)|*.*"
DHK1.ShowOpen
Text2.Text = DHK1.FileName
Image1.Picture = LoadPicture(Text2.Text)
Picture1.Picture = Image1.Picture
Exit Sub
x:
MsgBox "无效图片!", 64, "提示信息"
End Sub
Private Sub Command3_Click()
DHK1.Filter = "所有文件(*.*)|*.*"
DHK1.ShowSave
Text3.Text = DHK1.FileName
End Sub
DHK1是CommonDialog控件