如何使 TCP 客户端接受主机
本文关键字:端接 主机 客户端 客户 何使 TCP | 更新日期: 2023-09-27 18:32:54
我的TCP客户端应该:
- 接受主机、端口和文本字符串。
- 连接到主机/端口并在单击按钮时发送字符串(+两行馈送 ''r'''r')。
- 然后读取结果并将结果放回文本框中。
我得到端口和字符串结果的问题,但我没有得到关于主机的任何信息。
这是我到目前为止得到的:
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)
{
}
}
}
你试过 TcpClient 类吗?
除非你需要低级套接字 IO,否则你可能会发现这个类更容易处理(当然,对于你在这里的用例来说更容易)。
在TcpClient上,构造函数(或Connect)可以接受主机名,并且有一些方法可以提供对NetworkStreams(入站和出站)的访问。
该链接中的 MSDN 示例或多或少准确地包含您尝试执行的操作。
编辑:你能更明确地说明到底出了什么问题吗? 是 DNS 解析失败,还是您获得了有效的 IP?
您的服务器是否看到流量? 您是否尝试过在发送文本后调用Shutdown(SocketShutdown.Send)?