服务器端:服务器端主要完成开启对端口的侦听,这就像为计算机打开了一个"门",所有向这个“门”发送的请求都会被系统接收。在c#中可以通过以下步骤完成。
1)首先使用本机IP地址和端口号创建一个Sockets.TcpListener类型的实例,
2) 然后在该实例上调用Start()方法。从而开启对指定端口的侦听。
服务端对端口进行侦听
代码如下:
class ServerClient
{
static void Main(string[] args)
{
Console.WriteLine("Server is running....");
IPAddress ip=new IPAdress(new byte[] {192.168.0.100}); //本机计算机的IP地址。
TcpListener listener=new TcpListener(ip,8500);
listener.Start(); //开始监听
Console.WriteLine("Start Listening.......");
Console.WriteLine("\n\n输入\"Q\"键退出。);
do
{
key=Console.ReadKey(true).Key;
}while(key!=ConsoleKey.Q);
}
}
获取IPAdderss的另外几种常用方法:
IPAddress ip=IPAddress.Parse("192.168.0.100");
IPAddress ip=Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
客户端与服务端连接
1.单一客户端与服务器端连接
服务端开始对端口侦听以后,便可以创建客户端与其连接。这一步是通过在客户端创建一个TcpClient的类型实例完成的,每创建一个新的TcpClient便相当于创建一个新的套接字Socket与服务端通信。TcpClient类不过世对Socket进行了一个包装。在创建TcpClient类型实例时,可以指定远程服务器的地址和端口号。这样在创建的同时,就会像远程服务端发送连接请求,一旦成功,则两者间的连接就建立起来了。也可以使用重载的无参数构造函数创建对象,然后再调用Connect()方法,在Connect方法中传入远程服务器地址和端口号来与服务器建立连接。
需要注意的是不管事使用参数的构造函数与服务器连接,还是通过Connect()方法与服务器建立连接,都是同步方法(或者说是阻塞的)。也就是说:客户端与服务器端连接成功,方法返回,或者服务端不存在之前,无法继续后续的操作。这里先讨论同步的,后面再看异步的
class Client
{
static void main(string[] args)
{
Console.WriteLine("Client is running");
TcpClient client=new TcpClient();
try
{ client.Connect(IPAddress.Parse("192.168.0.100"),8500); }
catch(Exception ex){
Console.WriteLine(ex.Message);
return ;
}
//打印连接到的服务端信息
Console.WriteLine("Server Connected! Local:{0}--> Server:{1}",client.Client.LocalEndPont,client.Client.RemoteEndPoint);
}
}
2.多个客户端与服务端连接
多个客户端与服务端连接代码大体相同,只不过需要创建多个TcpClient而已。此处就不上代码。