网络传送图片
cvman 2005-08-17 11:54:54 我练习做网络传送图片
问题1:为什么我收到的图片上部五分之一左右是漆黑一片?
问题2,接收端如何能知道发送端图片大小以便设定接收数组大小?谢谢!
界面很简单:
1.发送端一个picturebox内有一幅图,一个button为发送按钮。
2.接收端一个picturebox、一个button为接收按钮,接收后picturebox的image赋为传过来的图片。
下面是源程序:
发送端:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sendsocket As New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp) '实例化socket
Dim ipendpiont As New Net.IPEndPoint(Net.IPAddress.Parse("192.168.0.1"), 8888) '建立终结点
Dim Stream As New IO.MemoryStream
PictureBox1.Image.Save(Stream, System.Drawing.Imaging.ImageFormat.Bmp)
Dim b As Byte() = Stream.ToArray
sendsocket.Connect(ipendpiont) '连接远程计算机
sendsocket.Send(b) '发送
Stream.Close()
sendsocket.Shutdown(Net.Sockets.SocketShutdown.Send) '关闭发送连接
sendsocket.Close() '关闭本
End Sub
’接收端
Dim receivesocket As New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim hostipendpiont As New Net.IPEndPoint(Net.IPAddress.Parse("192.168.0.1"), 8888)
receivesocket.Bind(hostipendpiont) '建立远程计算机的的socket
receivesocket.Listen(2) '监听socket
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim b(1765106) As Byte ‘如何确定该数组大小
Dim fs As New System.IO.MemoryStream
Dim hostsocket As Net.Sockets.Socket = receivesocket.Accept() '同意和发送端计算机建立连接
hostsocket.Receive(b)
fs.Write(b, 0, b.Length)
Dim Img As New Bitmap(fs)
PictureBox1.Image = Img
fs.Close()
hostsocket.Shutdown(Net.Sockets.SocketShutdown.Receive)
hostsocket.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub