zoukankan      html  css  js  c++  java
  • socket编程:简单的TCP客户端

    既然我们已经有了一个TCP服务器,因此可以创建 一个简单的TCP客户机与它进行通信。创建与TCP服务器相连 的客户机只有两 步
    1.创建一个套接字
    2.将套接字与远程服务竭地址相连

    创建客户机如同服务器编辑一样,进行客户机程序设计的第 一步是创建一个Socket对象.SocketConnect()使用这个Socket对象将所创建的套接字与远程主机相连:这个例子试图将套接字与位于IP地址为192.168.0.106的机器上的服务器相连.当然也可以与Dns.Resolve()一样使用主机名。也许可能注意到在服务器的编程中,没有使用任何异常处理方法,在客户端的程序设计中,就不能这样了.对于客户机的Connect()来说,最大的挑战就是如果远程服务器不能使用,将会产生异常情况,对于顾客来说将导致错误消息.解决这个问题较好的方法是在使用Connect()方法时用try-catch块来获取SocketExceptions,从而可以为顾客提供非常友好的提示.一旦远程的服务器TCP程序接收到连接请求,客户机程序就准备使用标准的Send()和Receive()方法同服务器传送数据.

     static void Main(string[] args)
            {
                int recv;
                byte[] data = new byte[1024];
                string input, strData;
                Socket socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint ipServer=new IPEndPoint(IPAddress.Parse("127.0.0.1"),19050);
                try
                {
                    socketClient.Connect(ipServer);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("can not connect server");
                    Console.WriteLine(ex.ToString());
                    return;
                }
                recv = socketClient.Receive(data);
                strData = Encoding.Default.GetString(data, 0, recv);
                Console.WriteLine(strData);
                while (true)
                {
                    input = Console.ReadLine();
                    if (input == "exit")
                        break;
                    socketClient.Send(Encoding.Default.GetBytes(input));
                    data = new byte[1024];
                    recv = socketClient.Receive(data);
                    strData = Encoding.Default.GetString(data, 0, recv);
                    Console.WriteLine(strData);
                }
                Console.WriteLine("Disconnecting from server......");
                socketClient.Shutdown(SocketShutdown.Both);
                socketClient.Close();
    
            }
  • 相关阅读:
    动态库的创建与使用
    静态库创建与链接
    tail命令使用
    hosts文件
    dns文件
    整数编码
    多线程之间同步
    多线程编程基础
    进程间通信——信号量
    进程间通信——管道
  • 原文地址:https://www.cnblogs.com/lqsilly/p/2921281.html
Copyright © 2011-2022 走看看