服务器 - 客户端TCP套接字编程

时间:2015-02-04 19:57:54

标签: c# sockets tcp client server

我正在尝试制作一个简单的服务器 - 客户端套接字程序。他们俩都可以互相发送消息?我有服务器和客户端类,当我尝试运行它们时,服务器获得连接但客户端没有连接到服务器。这是我的代码。

服务器类

static void Main(string[] args)
{
    System.Net.IPAddress IPAd = new System.Net.IPAddress(0);
    TcpListener serverSocket = new TcpListener(IPAd,8888);
    int requestCount = 0;
    TcpClient clientSocket = default(TcpClient);
    serverSocket.Start();
    Console.WriteLine(" >> Server Started");
    clientSocket = serverSocket.AcceptTcpClient();
    Console.WriteLine(" >> Accept connection from client");
    requestCount = 0;

    while ((true))
    {
        try
        {
            requestCount = requestCount + 1;
            NetworkStream networkStream = clientSocket.GetStream();
            byte[] bytesFrom = new byte[10025];
            networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
            string dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
            dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
            Console.WriteLine(" >> Data from client - " + dataFromClient);
            string serverResponse = "Last Message from client" + dataFromClient;
            Byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse);
            networkStream.Write(sendBytes, 0, sendBytes.Length);
            networkStream.Flush();
            Console.WriteLine(" >> " + serverResponse);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }

    clientSocket.Close();
    serverSocket.Stop();
    Console.WriteLine(" >> exit");
    Console.ReadLine();
}

客户端类

public partial class Form1 : Form
{
    System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        msg("Client Started");
        clientSocket.Connect("127.0.0.1", 8888);
        label1.Text = "Client Socket Program - Server Connected ...";
    }

    private void SendMessage_Click(object sender, EventArgs e)
    {
        NetworkStream serverStream = clientSocket.GetStream();
        byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$");
        serverStream.Write(outStream, 0, outStream.Length);
        serverStream.Flush();

        byte[] inStream = new byte[10025];
        serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
        string returndata = System.Text.Encoding.ASCII.GetString(inStream);
        msg(returndata);
        textBox2.Text = "";
        textBox2.Focus();
    }

    public void msg(string mesg)
    {
        textBox1.Text = textBox1.Text + Environment.NewLine + " >> " + mesg;
    }
}

0 个答案:

没有答案
相关问题