重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
'xiansr.2014/2/7 vb.net2010 调试通过
创新互联建站专注于企业全网整合营销推广、网站重做改版、肥西网站定制设计、自适应品牌网站建设、成都h5网站建设、商城网站建设、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为肥西等各大城市提供网站开发制作服务。
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
端口不NAT,两个子网中的两端之间不可能通信。至少要有一方处在公网下或有路由端口映射,不必双方都映射。
建议题主找本计算机网络的书研读一下子网划分这块儿。
网上很多相关的现成的代码
你需要知道的一点是数据接收不是接收一次就完了 接收端根本不知道数据什么时候要过来 所以数据端应该一直重复着"等待-接收"的过程 于是就有了要在线程中接收数据的代码
服务器先进行
Bind ()绑定服务器的端口
然后BeginReceive接受客户端发送的数据
客户端Bind ()绑定客户端接受和发送数据的端口
SendTo()来发送数据就可以
不需要进行BeginConnect,因为UDP不需要连接
private void MyPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
public static boolean isNumeric(String str){
if(str.matches("//d*"){
return true;
}else{
return false;
}
}
DatagramSocket用于接收和发送UDP的Socket实例。该类有3个构造函数:DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让操作系统分配一个可用的端口。DatagramSocket(int port):创建实例,并固定监听Port端口的报文。通常用于服务端。