大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
winsock 发送图片,就是发送文件嘛。
站在用户的角度思考问题,与客户深入沟通,找到雨山网站设计与雨山网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广、域名与空间、网页空间、企业邮箱。业务覆盖雨山地区。
不过UDP协议每次最多只能发送8K,所以你要先读取文件,建立以个byte()数组 然后第一次发送是从数组的0-8100这个范围,下次再发送的时候将再从8101开始发送,长度仍未8100就可以了。用一个while 循环来判断文件有没有发送完成就行了。对于接收端,在接收的时候也是要用一个循环来写文件,前提是你必须先把要发送的文件的长度告诉接收端。说的够详细了吧!
'xiansr.2014/2/7 vb.net2010 调试通过
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim udpClient As New UdpClient(11000)
Try
udpClient.Connect("127.0.0.1", 11000)
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(RichTextBox1.Text)
udpClient.Send(sendBytes, sendBytes.Length)
Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
Dim receiveBytes As [Byte]() = udpClient.Receive(RemoteIpEndPoint)
Dim returnData As String = Encoding.ASCII.GetString(receiveBytes)
RichTextBox2.Text = "接收到: " + returnData.ToString()
'Debug.Print(("This message was sent from " + RemoteIpEndPoint.Address.ToString() + " on their port number " + RemoteIpEndPoint.Port.ToString()))
udpClient.Close()
Catch ex As Exception
stop
End Try
End Sub
End Class
网上很多相关的现成的代码
你需要知道的一点是数据接收不是接收一次就完了 接收端根本不知道数据什么时候要过来 所以数据端应该一直重复着"等待-接收"的过程 于是就有了要在线程中接收数据的代码
DatagramSocket用于接收和发送UDP的Socket实例。该类有3个构造函数:DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让操作系统分配一个可用的端口。DatagramSocket(int port):创建实例,并固定监听Port端口的报文。通常用于服务端。
服务器先进行
Bind ()绑定服务器的端口
然后BeginReceive接受客户端发送的数据
客户端Bind ()绑定客户端接受和发送数据的端口
SendTo()来发送数据就可以
不需要进行BeginConnect,因为UDP不需要连接
当触发DataArrival事件后,从监视里看到程序得到了正确的数据包长度——144,
你的144是参数输入的,跟 strdata的长度,看不出来有关系呢。
但是用strdata读出来就变成了72,
72是取的 strdata长度,跟输入的参数 bytestotal,看不到有任何关系呢