㈠ udp通信客户端与服务器端的区别在哪
通常来讲,客户端是不需要绑定端口号的,而服务器端是需要绑定监听的端口号。其他的其实区别不是很大了,呵呵,从socket通信的角度来看,UDP通信属于帧传输,TCP则是流传输,在帧传输过程中对于消息的次序和到达情况没有需求,所以UDP属于不可靠传输,不需要确认和排序。这样在客户端和服务器端的实现上就没有太大的差别了。
但是客户端其实也可以用bind来绑定端口的,你在Linux下写一个简单的测试程序就知道了,嘿嘿。
㈡ c#UDP聊天程序,关于服务端和客户端的功能!急!!!!
QQ以前的客户端之间传递可能是P2P的,尤其在发送文件的时候,不过现在不好说了,现在几乎所有信息都会通过服务器中转。
如果想采用P2P的形式,你在服务器段保存一份客户端IP地址列表,客户端想互相通讯时,请求一下这个列表就可了,不过客户端你还是要有listen端口。
如果想通过服务器中转,那就简单了,设计下你的消息协议,由服务器中转就是了。
㈢ 请教一个基于UDP的程序,多客户端对一服务端的
UDP因为是一种无连接的服务,没有服务器和客户端的概念,实际上只需要把数据发出去就可以了;
给你一个VB的程序参考下;
PublicClassUDPClient2015
PrivateDeclareSubSleepLib"Kernel32"()
DimremoteipAsString=""
DimlocalipAsString=""
DimcountAsInteger=0
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
TextBox1.Text="10.33.132.25"
Button1.Text="发送"
Button2.Text="连接"
Button3.Text="一直发送"
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
localip=UDPClient1.LocalIP
IfButton2.Text="连接"Then
remoteip=TextBox1.Text
WithUDPClient1
.Protocol=MSWinsockLib.ProtocolConstants.sckUDPProtocol
.RemoteHost=remoteip
.RemotePort=2014
.LocalPort=2015
.Bind(2015,localip)
EndWith
Button2.Text="关闭连接"
TextBox1.ReadOnly=True
Else
WithUDPClient1
.Close()
EndWith
Button2.Text="连接"
TextBox1.ReadOnly=False
EndIf
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
UDPClient1.SendData(TextBox3.Text)
TextBox2.Text=TextBox2.Text&TextBox3.Text&vbCrLf
TextBox3.Text=""
EndSub
PrivateSubUDPClient1_DataArrival(ByValsenderAsObject,ByValeAsAxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent)HandlesUDPClient1.DataArrival
DimstrDataAsString=""
UDPClient1.GetData(strData)
TextBox2.Text=TextBox2.Text&strData&vbCrLf
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
IfButton3.Text="一直发送"Then
Button3.Text="停止发送"
Timer1.Start()
Else
Button3.Text="一直发送"
Timer1.Stop()
EndIf
EndSub
PrivateSubTimer1_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
UDPClient1.SendData(200)
EndSub
EndClass
㈣ UDP类型的服务器和客户端,只能是客户端最先发送数据
UDP没有 客户端 和服务器的区分,随便那个先发都可以。
不同的机器发过来也行。只要发到相应的ip 和端口就行了。
因为UDP和TCP不同,UDP是不需要首先建立连接的。
㈤ udp服务器怎么获取一个客户端的地址
以VB为例,在udpWinSock_DataArrival事件中,输入下面的代码,即可获取客户端IP,发送消息给客服端。,如果是客户端,需要把该IP地址转发给服务器。
Private Sub udpWinSock_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Dim Strs As String
udpWinSock.GetData strData, vbString '接收到客户端信息
udpWinSock.RemoteHost = udpWinSock.RemoteHostIP '获取客服端的IP,并将要对话的客服端ip设置为此IP
'立即发送文本给客户端
Strs = “已接收成功您的信息:" & strData
udpWinSock.SendData Strs '发送回复信息给当前客户端
End Sub
㈥ c# UDP(udpclient)客户端和服务端有何区别
UDP是不需要侦听的,就是无连接发送。。你只需要发送给下一个路由,在包里指定目标地址的IP就行。下一个路由会自动转交给下下一个路由,同理…,直到找到目标地址。当你数据发出去之后就不需要管了,所以,对方到底收到数据没有,本机也不知道。
TCP不同,TCP是把数据发送出去之后对方收到数据会返回一个标识说明对方收到了。
所以在编程里:UDP只需要创建一个udpClient(IP+port)发送就行了。在服务端,只需要调用Receive方法就行了。
IPEndPoint remote = null;
byte[] bytes = udpClient.Receive(ref remote);
㈦ 用java.net进行UDP编程服务器端和客户端的流程是怎样的
服务器端:
import java.io.*;
import java.net.*;
import java.applet.Applet;
public class TalkServer{
public static void main(String args[]) {
try{
ServerSocket server=null;
try{
server=new ServerSocket(4700);
}catch(Exception e) {
System.out.println("can not listen to:"+e);
}
Socket socket=null;
try{
socket=server.accept();
}catch(Exception e) {
System.out.println("Error."+e);
}
String line;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter os=new PrintWriter(socket.getOutputStream());
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client:"+is.readLine());
line=sin.readLine();
while(!line.equals("bye")){
os.println(line);
os.flush();
System.out.println("Server:"+line);
System.out.println("Client:"+is.readLine());
line=sin.readLine();
}
os.close();
is.close();
socket.close();
server.close();
}catch(Exception e){
System.out.println("Error:"+e);
}
}
}
客户端:
import java.io.*;
import java.net.*;
public class TalkClient {
public static void main(String args[]) {
try{
Socket socket=new Socket("127.0.0.1",4700);
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
PrintWriter os=new PrintWriter(socket.getOutputStream());
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readline;
readline=sin.readLine(); //从系统标准输入读入一字符串
while(!readline.equals("bye")){
os.println(readline);
os.flush();
System.out.println("Client:"+readline);
System.out.println("Server:"+is.readLine());
readline=sin.readLine(); //从系统标准输入读入一字符串
}
os.close(); //关闭Socket输出流
is.close(); //关闭Socket输入流
socket.close(); //关闭Socket
}catch(Exception e) {
System.out.println("Error"+e); //出错,则打印出错信息
}
}
}
㈧ 如何使用VB中的UDP穿过客户端上网用的服务器返回给客户端数据
你问的就是网络传输中的经典问题“内网穿透”。
若规定必须用UDP协议,简单解决的话内网应备有一台有公网IP的服务器,命名为“服务器A”。由服务器A负责内网与客户端UDP协议数据交换,然后由“服务器A”与公网另一台“服务器B”再进行UDP协议的数据交换即可。
也就是整体架构设计上,增加一个公网与内网的中转站。
若是可以用TCP协议就不存在此问题了,内网“客户端”直接连接公网“服务器B”,并互发数据。
回答补充:
QQ是支持TCP协议的,你可以到QQ技术支持服务自己看http://service.qq.com/info/20038.html
QQ软件采用2种协议,UDP和TCP/IP协议,您可以在登陆设置中选择协议登录。
在用UDP协议时,QQ有专门措施防止数据丢失,发送数据之前它会ping对方主机,如果没有回复,就通过TCP协议服务器转发。
㈨ 如何实现一个tcp/udp客户端和服务器,以及它们之间是如何交互
你先要了解一下网络协议。你这说的是传输层的协议,TCP和UDP都是固定端口的。网络分成好多层的,每层的端口都不一样,每一层将会把低一层的数据封装打包,这个就是所谓的协议,不同功能的软件和硬件处理自己这层的端口和数据,然后再传递给上层。每一层协议不相关,也不需要知道和理解传来的是什么,只负责自己的规则就好,传过来的都当成数据处理打包。RTSP是应用层的协议,在TCP和UDP之上层,可以自定义端口,一般是554。系统自己会处理TCP和UDP数据,socket都已经实现好了,然后再将RTSP的协议数据通过端口554给你客户端。所以你不用太关心TCP和UDP层的东西,如果你发烧无聊,也可以自己实现TCP和UDP协议,抓取数据,得到RTSP的数据包,就是RTSP协议层部分了。获取到RTSP的协议部分,通过RTSP的协议,分析出命令和数据部分,这个就是基本解析过程。
㈩ TCP/UDP网络调试工具 1.0怎么用
通常有三种协议模式,TCP服务器、TCP客户端和UDP,如下图格西烽火软件所示。
TCP服务器设置本地地址和端口;
TCP客户端设置本地地址和端口、远程地址和端口;
UDP设置本地地址和端口、远程地址和端口。
可以打开多个软件互测。