如何使TCP客户端接受主机

时间:2013-09-26 23:11:27

标签: c# tcp

我的TCP客户端应该:

  1. 接受主机,端口和文本字符串。
  2. 连接到主机/端口,并在单击按钮时发送字符串(+两​​行feed \ r \ n \ r \ n)。
  3. 然后读取结果并将结果放回文本框中。
  4. 我得到端口和字符串的结果的问题,但我没有得到关于主机的任何内容。

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

        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)
        {
    
        }
    }
    }
    

1 个答案:

答案 0 :(得分:0)

您是否尝试过TcpClient课程?

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

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

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

修改 你能更清楚地知道到底出了什么问题吗? DNS解析是否失败,或者您获得了有效的IP?

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