两台电脑udp协议通讯
用Labview的UDP控件,很简单的。。。呵呵

两台主机各安一个网卡相互通信,其中一台作UDP服务器,端口9999
1) 公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。 2) 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。 3) 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始

udp连接两个电脑
关于UDP:将数据及源和目的封装成数据包中,不需要建立连接;每个数据报的大小在限制在64k内;因无连接,是不可靠协议;不需要建立连接,速度快 使用udp协议主要涉及到两个类:DatagramSocket,DatagramPacketDatagramSocket: 用于建立一个数据包的出口或入口,构造方法中有IP的都是用于接收方的DatagramPacket: 用于包装数据,构造方法中有IP的都是用于发送方的可以将其比作发送包裹,DatagramSocket就是快递公司,选择哪一个快递公司并不会影响包裹的发送;而DatagramPacket则是你的包裹,上面必须写明地址(IP)和门牌号(port:端口号).下面的程序,两台电脑各运行一个,只需要将IP改为接收方的IP,端口号改为你电脑上面空余的端口号(电脑的端口号是0--65535,1024以内是系统的,所以一般建议使用1024以外的端口号) import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;import java.util.Scanner;public class Chat { public static void main(String[] args) { DatagramSocket sendsocket = null; DatagramSocket receiceSocket = null; try { sendsocket = new DatagramSocket(); receiceSocket = new DatagramSocket(8888,InetAddress.getByName("127.0.0.1")); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } new Thread(new Send(sendsocket)).start(); new Thread(new Receive(receiceSocket)).start(); }}class Send implements Runnable{ DatagramSocket socket = null; public Send(DatagramSocket socket) { this.socket = socket; } @Override public void run() { byte[] buf = new byte[1024]; DatagramPacket packet = null; Scanner scanner = new Scanner(System.in); while(true) { String data = scanner.nextLine(); if("over".equalsIgnoreCase(data)) { break; } buf = data.getBytes(); try { //接收方的IP和端口号 packet = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 9999); socket.send(packet); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } scanner.close(); }}class Receive implements Runnable{ DatagramSocket socket; public Receive(DatagramSocket socket) { this.socket = socket; } @Override public void run() { while(true) { byte[]buf = new byte[1024]; DatagramPacket packet = new DatagramPacket(buf, buf.length); try { socket.receive(packet); } catch (IOException e) { e.printStackTrace(); break; } String text = new String(packet.getData(), 0, packet.getLength()); String ip = packet.getAddress().getHostAddress(); if("over".equalsIgnoreCase(text)) { break; } System.out.println(ip+" : "+text); } socket.close(); } } 在发送端,要在数据包对象中明确目的地IP及端口 DatagramSocket ds = new DatagramSocket();byte[] by = “hello,udp”.getBytes();DatagramPacket dp = new DatagramPacket(by,0,by.length, InetAddress.getByName(“127.0.0.1”),10000);ds.send(dp);ds.close(); 在接收端,要指定监听的端口 DatagramSocket ds = new DatagramSocket(10000);byte[] by = new byte[1024];DatagramPacket dp = new DatagramPacket(by,by.length);ds.receive(dp);String str = new String(dp.getData(),0,dp.getLength());System.out.println(str+"--"+dp.getAddress());ds.close();

两台连在广域网上的计算机,是如何实现通信的
qq是有服务器的,先通过IM软件,即QQ与服务器取得每个人的数据(如好友号码,资料),同时向服务器上传你登录的计算机的地址(硬件地址和IP)。也是因为如此,过去QQ只能在一个客户端登录。当开始对话时,两个或多个人的客户端程序,通过同一端口进行通信,而目标就是对方的物理地址和IP地址,因为客户端程序一直在监听那个端口,所以一旦有信息通过这个端口传过来,便会立即响应,且显示出来。这些涉及到计算机和网络技术通信协议层,我只能简单地说一下。
这是计算机网络里的知识。。传输大概分3种,TCP UDP ICMP等,TCP基于3次握手通信,UDP基于广播通信。在每次传播的信息头中,含有目标地点的IP,端口等信息,以及自己的IP,端口等,TCP需要确认传输到并且收到回复,而UDP是广播,不是很安全,但是广播的信息中也含有目标的IP,端口等,这样信息就会找到目标,进行传输
实现两台计算机互相通信,要使用到 socket 编程,只要在创建套接字的时候绑定本机IP和端口,然后再通过对方计算机的ip就可以实现通信。 这里通信 设计到 使用UDP 还是 TCP 。UDP是面向通信的,效率较高,但不安全。常用在局域网通信。 TCP是面向连接的,效率不高,安全,比较常用在广域网通信。
不知道你专业程度如何, 首先,每台连网的电脑都会有一个IP地址,每一种网络通信类软件都会占用一个端口,就好比一个窗口,也有一个端口号。 两台电脑每台电脑也就是拿着这两个号码,与对方联系。
TCP/IP协议。801.XX网络协议。等。

一个路由器上接着两台电脑进行socket下的udp试验, 发生了一个特别奇怪的事情:发送方发送数据
UDP是无连接的,临时连接,每次的端口号可能不一样
两台电脑在传送数据的时候会生成两个端口号,一个是发送端口号一个是接收端口号
不可能

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/42580.html。