现在的位置: 首页 > 综合 > 正文

网络编程资料总结(一)—-TcpListener和TcpClient的基本用法

2017年12月01日 ⁄ 综合 ⁄ 共 2980字 ⁄ 字号 评论关闭


  
服务器端创建 Socket后,在客户端,你将可以通过Connect方法连接到指定的服务器,客户端也可以通过Write方法向远程服务器发送数据,而后可以通过 Receive从服务端接收数据;而在服务器端,你需要使用Bind方法绑定所指定的接口使Socket与一个本地终结点相联,并通过Listen方法侦听该接口上的请求,当侦听到用户端的连接时,调用Accept完成连接的操作,创建新的Socket以处理传入的连接请求。

   Socket完成后,使用Close方法关闭Socket


服务器端程序:
using System;

using System.Collections.Generic;

using System.Text;

using System.Net.Sockets;

using System.Threading;

using System.Net;

 

namespace tcpchater

{

    class tcpserver

    {

        static void Main(string[] args)

        {

            try

            {

                 //初始化监听,端口为

                 TcpListener myList = new TcpListener(IPAddress.Parse("127.0.0.1"), 8001);

 

                 //开始监听服务器端口

                 myList.Start();

 

                 Console.WriteLine("启动服务器端,端口服务...");

                 Console.WriteLine("本地节点为:" + myList.LocalEndpoint);//LocalEndpoint属性标识正用于侦听传入客户端连接请求的本地网络接口和端口号

                 Console.WriteLine("等待客户端连接...");

 

                 //等待处理接入连接请求

                 Socket s = myList.AcceptSocket();

 

                 //新建立的连接用套接字s表示

                 Console.WriteLine("客户端连接来自" + s.RemoteEndPoint + " 已上线.");

 

                 System.Text.UTF8Encoding utf8 = new UTF8Encoding(); //可以处理中文

                 //接收客户信息

                 byte[] b = new byte[2048];

                 int k = s.Receive(b);

                 Console.Write("客户端说:" + utf8.GetString(b, 0, k));

                 Console.WriteLine();

                 Thread.Sleep(3000);//停秒

 

 

                 Console.Write("服务器端说:");

                 //处理客户端请求,给客户端回应

                 string str = Console.ReadLine();

                 s.Send(utf8.GetBytes(str));

                 Console.WriteLine("已发送回应信息");

 

                //释放资源,结束监听

                 s.Close();

                 myList.Stop();

             }

             catch (Exception e)

             {

                 Console.WriteLine("错误..." + e.StackTrace);

             }

        }

    }

}

客户端程序

using System;

using System.Collections.Generic;

using System.Text;

using System.Net.Sockets;

using System.IO;

 

namespace tcpclient

{

   class tcpclient

    {

        static void Main(string[] args)

        {

            try

            {

 

                //建立客户端套接字

                TcpClient tcpclnt = new TcpClient();

                Console.WriteLine("正在连接服务器...");

 

                //连接服务器

                tcpclnt.Connect("127.0.0.1", 8001);

 

                //得到客户端的流

                NetworkStream stm = tcpclnt.GetStream();

 

                Console.WriteLine("已连接到服务器");

                Console.Write("客户端说:");

                string str = Console.ReadLine();//输入说话内容

                //发送字符串

                System.Text.UTF8Encoding utf8 = new UTF8Encoding(); //可以处理中文

                byte[] ba = utf8.GetBytes(str);

                Console.WriteLine("数据已经传送到服务器,等待服务器回应...");

                stm.Write(ba, 0, ba.Length);

                //接收从服务器返回的信息

                byte[] bb = new byte[2048];

                int k = stm.Read(bb, 0, 100);

                //输出服务器端返回的信息

                Console.WriteLine("服务器说:"+ utf8.GetString(bb, 0, k));

                tcpclnt.Close();

            }

            catch (Exception e)

            {

                Console.WriteLine("错误..." + e.StackTrace);

            }

        }

    }

}

 

抱歉!评论已关闭.