C#向某个客户端的某个端口发送信息时可以用hostname么?

如果不知道这个客户端的IP,只知道Hostname,怎样向这个客户端的某个端口发送信息?请问应该怎么写?
客户端是一台PDA,它一直在监视自己的某个端口,不向服务器发送任何请求。
而服务器不定时的会像这台PDA发送一些信息,但是PDA在移动过程中从一个access point换到另一个access point时IP会变化,所以服务器是不知道客户端的IP的

能给个UDP的例子程序么?
我刚做C#没几天儿,UDP听都没听说过

你没有理解TCP连接的过程.

TCP通讯,永远都是客户端先向服务器发送连接请求(客户端->服务器),服务器接受请求后,双方才能通讯,既然是客户端发起请求,那么服务器就一定能知道客户端的IP和PORT,同时,这个都可以不考虑.
TcpClient client = listener.AcceptTcpClient();
直接使用client和客户端通讯就可以了.因为已经建立了连接.

不要妄图服务器主动连接客户端.那是不现实的

补充:这种情况用什么TCP协议呢.直接用UDP组播不好吗 ,
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-26
我只知道一个可以通过ip获得hostname的方法 也是udp
Dns.GetHostByAddress(remoteHost.Address).HostName
好像也有相反的方法,.没时间找了
第2个回答  2009-05-27
可以

C#向某个客户端的某个端口发送信息时可以用hostname么?
TCP通讯,永远都是客户端先向服务器发送连接请求(客户端->服务器),服务器接受请求后,双方才能通讯,既然是客户端发起请求,那么服务器就一定能知道客户端的IP和PORT,同时,这个都可以不考虑.TcpClient client = listener.AcceptTcpClient();直接使用client和客户端通讯就可以了.因为已经建立了连接.不要妄图服...

c#监听某一个端口的请求情况
一般就是因为端口被占用 IPAddress Addr=IPAddress.Parse(this.hostname);TcpListener server = new TcpListener(Addr,port);server.Start();--- 如果你已在此地址上做了发送数据的socket或tcpclient或udp,那么这个监听和发送在同一个端口上就会发生错误的。using System;using System.IO...

帮忙写一个C#例子:两个进程间通信的问题.
SetListBox(string.Format("向[{0}]发送:{1}", user.client.Client.RemoteEndPoint, str)); } catch { SetListBox(string.Format("向[{0}]发送信息失败", user.client.Client.RemoteEndPoint)); } } private void AddComboBoxitem(User user) { if (comboBoxReceiver.InvokeRequired == true) { this.In...

用C#如何获取客户端的计算机名称?
Console.WriteLine("Host name : " + hostInfo.HostName);客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,...

用C#如何获取客户端的计算机名称?
这个属性就是只能获取IP地址的要获取计算机名字用这个方法:System.Net.Dns.GetHostName()

C# 监视某个端口时的问题?
这样就完了 TcpListener listener = new TcpListener(2000);listener.Start();TcpClient client = listener.AcceptTcpClient();但是这样只能接收一次请求.TcpListener listener = new TcpListener(2000);listener.Start();while(true){ TcpClient client = listener.AcceptTcpClient();}\/\/应该循环监听 ...

C#TCP通信问题: 客户端发送的消息只能收到第一条,必须断开重新连接...
你代码写的有问题,Encoding没办法处理断掉的字节,比如现在utf-8有可能用三个字节存储一个数据,当只发送了一个或者两个,Encoding就只能返回前面的数据了。建议你使用Encoder和Decoder发送数据,他会记住之前解析不了的数据,并且和新的数据合并。

C# 服务器端如何保存客户端的Socket
\/\/遍厉集合列表里面每个套接字对象,并使用其对象向各个客户端发送消息(代码)} catch(SocketException exp){ if(exp.ErrorCode==10052)\/\/10052表示客户端已经断开连接,我印象中应该是10052,如果不是可以去MSDN上查下,\/\/清除集合列表里面的相应套接字(代码)} 还有一点需要注意,如果用的是不同步...

用C#如何将两个界面程序连接到一个服务器上并可以实时通信
UDP客户机程序与服务器程序非常类似。因为客户机不需要在指定的UDP端口等待流入的数据,因此,不使用Bind()方法,而是使用在数据发送时系统随机指定的一个UDP端口,而且使用同一个端口接收返回的消息。在开发产品时,要为客户机指定一套UDP端口,以便服务器和客户机程序使用相同的端口号。UDP客户机程序首先定义一个IPEndPoint...

c#客户端如何向服务器提取数据
object progIds = server.GetOPCServers(host.HostName);foreach (string progId in (Array)progIds){ \/\/此处是获得单个progId,方便后面连接。server.Connect(progId);} \/\/此处为常规设置,group中还有许多参数没有设置,我都采取了它的默认值,我没有特殊要求,所以不用改。OPCGroups groups = ...

相似回答