socket c#版

Server:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace socket
{
    class Program
    {
        static void Main(string[] args)
        {
            int recv;
            // 定义一个空数组作为数据缓冲器,缓冲流入和流出的消息
            byte[] data = new byte[1024];
            // IPEndPoint ip地址和端口绑定,用来进行socket服务
            // IPAddress.Any 设置可以接受任何网络接口的请求,也可以设置特殊的网络接口,如“192.168.1.6”,9050是端口号
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any,9050);
            // 创建Tcp套接字
            Socket newsock = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
            newsock.Bind(ipep);
            newsock.Listen(10);
            // 用Bind和Linsten将该套接字与ipEndPoint进行绑定
            Console.WriteLine("Waiting for a client...");
            // client用来接受客户端的接入连接尝试,Accept()返回一个新的socket对象
            Socket client = newsock.Accept();
            // 得到客户机的信息,并打印出来
            IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint;
            Console.WriteLine("Connected with {0} at port {1}",clientep.Address, clientep.Port);
            string welcome = "Welcome to my test server";
            // Encoding.ASCII用于字符串与字符数组间的转换
            data = Encoding.ASCII.GetBytes(welcome);
            client.Send(data,data.Length,SocketFlags.None);
            while (true)
            {
                data = new byte[1024];
                recv = client.Receive(data);
                if (recv == 0)
                {
                    break;
                }
                Console.WriteLine(Encoding.ASCII.GetString(data, 0 ,recv));
                client.Send(data, recv, SocketFlags.None);
            }
            Console.WriteLine("Disconnected from {0}",clientep.Address);
            client.Close();
            newsock.Close();
        }
    }
}

client:

using System;
using System.Net;
using System.Net.Sockets;  
using System.Text;

namespace SimpleTcpSrvr
{
    class Program
    {
        static void Main(string[] args)
        {
           byte[] data = new byte[1024];
           string input, stringData;
           // 设置服务器ip进行连接,
           IPEndPoint ipep =new IPEndPoint(IPAddress.Parse("10.85.0.36"), 9050);
           Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
           try
           {
               server.Connect(ipep);
           }
           catch (SocketException e)
           {
               Console.WriteLine("Unable to connect to server");
               Console.WriteLine(e.ToString());
               return;
           } 
           int recv = server.Receive(data);
           stringData = Encoding.ASCII.GetString(data, 0, recv);
           Console.WriteLine(stringData);
            while(true)
            {
                input = Console.ReadLine();
                if (input == "exit")
                break;
                server.Send(Encoding.ASCII.GetBytes(input));
                data = new byte[1024];
                recv = server.Receive(data);
                stringData = Encoding.ASCII.GetString(data, 0, recv);
                Console.WriteLine(stringData);
            };
            Console.WriteLine("Disconnecting from server...");
            server.Shutdown(SocketShutdown.Both);
            server.Close();
        
        }
    }
}

猜你喜欢

转载自blog.csdn.net/hxy19971101/article/details/80269242