如何使 TCP 客户端接受主机

本文关键字:端接 主机 客户端 客户 何使 TCP | 更新日期: 2023-09-27 18:32:54

我的TCP客户端应该:

  1. 接受主机、端口和文本字符串。
  2. 连接到主机/端口并在单击按钮时发送字符串(+两行馈送 ''r'''r')。
  3. 然后读取结果并将结果放回文本框中。

我得到端口和字符串结果的问题,但我没有得到关于主机的任何信息。

这是我到目前为止得到的:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.IO;
    using System.Net.Sockets;

   namespace TCP_Client
   {
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        string port = port1.Text;
        int myParsedInt = Int32.Parse(port);
        System.Net.IPAddress[] adresslist = Dns.GetHostAddresses(host1.Text);
        Socket connectSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        connectSocket.Connect(adresslist[0], myParsedInt);
        System.IO.StreamReader connectionRead = new System.IO.StreamReader(new NetworkStream(connectSocket));
        connectSocket.Send(System.Text.Encoding.UTF8.GetBytes(sendText.Text + "'r'n"));
        while (connectionRead.Peek() >= 0)
        {
            this.textOutput.AppendText(connectionRead.ReadLine() + "'r'n");
        }
        connectSocket.Close();
    }
    private void textOutput_TextChanged(object sender, EventArgs e)
    {
    }
    private void host1_TextChanged(object sender, EventArgs e)
    {
    }
    private void port1_TextChanged(object sender, EventArgs e)
    {
    }
    private void sendText_TextChanged(object sender, EventArgs e)
    {
    }
}
}

如何使 TCP 客户端接受主机

你试过 TcpClient 类吗?

除非你需要低级套接字 IO,否则你可能会发现这个类更容易处理(当然,对于你在这里的用例来说更容易)。

在TcpClient上,构造函数(或Connect)可以接受主机名,并且有一些方法可以提供对NetworkStreams(入站和出站)的访问。

该链接中的 MSDN 示例或多或少准确地包含您尝试执行的操作。

编辑:你能更明确地说明到底出了什么问题吗? 是 DNS 解析失败,还是您获得了有效的 IP?

您的服务器是否看到流量? 您是否尝试过在发送文本后调用Shutdown(SocketShutdown.Send)?