zoukankan      html  css  js  c++  java
  • TCP返回信号

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

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    Server(10086); //监听10086端口
    }

    /// <summary>
    /// 服务器端
    /// </summary>
    /// <param name="port"></param>
    static void Server(int port)
    {
    try
    {
    //1.监听端口
    TcpListener server = new TcpListener(IPAddress.Any, port);
    server.Start();
    Console.WriteLine("{0:HH:mm:ss}->监听端口{1}...", DateTime.Now, port);

    //2.等待请求
    while (true)
    {
    try
    {
    //2.1 收到请求
    TcpClient client = server.AcceptTcpClient(); //停在这等待连接请求
    IPEndPoint ipendpoint = client.Client.RemoteEndPoint as IPEndPoint;
    NetworkStream stream = client.GetStream();

    //2.2 解析数据,长度<1024字节
    string data = string.Empty;
    byte[] bytes = new byte[1024];
    int length = stream.Read(bytes, 0, bytes.Length);
    if (length > 0)
    {
    data = Encoding.Default.GetString(bytes, 0, length);
    Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);
    }

    //2.3 返回状态
    byte[] messages = Encoding.Default.GetBytes("ok.");
    stream.Write(messages, 0, messages.Length);

    //2.4 关闭客户端
    stream.Close();
    client.Close();
    }
    catch (Exception ex)
    {
    Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);
    }
    }
    }
    catch (SocketException socketEx)
    {
    //10013 The requested address is a broadcast address, but flag is not set.
    if (socketEx.ErrorCode == 10013)
    Console.WriteLine("{0:HH:mm:ss}->启动失败,请检查{1}端口有无其他程序占用.", DateTime.Now, port);
    else
    Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, socketEx.Message);
    }
    catch (Exception ex)
    {
    Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);
    }
    Console.ReadKey();
    }
    }
    }

    2.客户端代码

    复制内容到剪贴板 程序代码
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    Client("192.168.1.100", 10086, "mzwu.com"); //发送数据
    }

    /// <summary>
    /// 客户端
    /// </summary>
    /// <param name="ip"></param>
    /// <param name="port"></param>
    /// <param name="message"></param>
    static void Client(string ip, int port, string message)
    {
    try
    {
    //1.发送数据
    TcpClient client = new TcpClient(ip, port);
    IPEndPoint ipendpoint = client.Client.RemoteEndPoint as IPEndPoint;
    NetworkStream stream = client.GetStream();
    byte[] messages = Encoding.Default.GetBytes(message);
    stream.Write(messages, 0, messages.Length);
    Console.WriteLine("{0:HH:mm:ss}->发送数据(to {1}):{2}", DateTime.Now, ip, message);

    //2.接收状态,长度<1024字节
    byte[] bytes = new Byte[1024];
    string data = string.Empty;
    int length = stream.Read(bytes, 0, bytes.Length);
    if (length > 0)
    {
    data = Encoding.Default.GetString(bytes, 0, length);
    Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);
    }

    //3.关闭对象
    stream.Close();
    client.Close();
    }
    catch (Exception ex)
    {
    Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);
    }
    Console.ReadKey();
    }
    }
    }

  • 相关阅读:
    操作系统学习笔记 003 安装SourceInsight
    操作系统学习笔记 002 安装NASM
    操作系统学习笔记 001 安装Ubuntu
    ATmega8仿真——键盘扫描的学习
    Open-Drain&Push-Pull
    ATmega8仿真——LED 数码管的学习
    SSD固态硬盘的GC与Trim
    前缀、中缀、后缀表达式
    动态规划解决01背包问题
    javascript 获取图片原始尺寸
  • 原文地址:https://www.cnblogs.com/limitpjz/p/15389800.html
Copyright © 2011-2022 走看看