簡體   English   中英

無法在C#中連接2台計算機

[英]Unable to connect 2 computers in c#

我正在嘗試在兩台計算機之間發送消息。 我已經能夠建立連接,但是由於某些奇怪的原因,我無法獲取流。

服務器代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace chat_server
{
 class Program
 {
    static void Main(string[] args)
    {
        TcpListener server = new TcpListener(IPAddress.Any, 9999);
        server.Start();

        Console.WriteLine("Waiting for client connections");
        TcpClient client = server.AcceptTcpClient();
        Console.WriteLine("Client request accepted");

        NetworkStream stream = client.GetStream();
        StreamReader reader = new StreamReader(stream);
        StreamWriter writer = new StreamWriter(stream);

        Console.WriteLine("The message is " + reader.ReadToEnd());
    }
 }
}

客戶代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace chat_client
{
 class Program
 {
    static void Main(string[] args)
    {
        TcpClient client = new TcpClient("localhost", 9999);

        NetworkStream stream = client.GetStream();
        StreamReader reader = new StreamReader(stream);
        StreamWriter writer = new StreamWriter(stream);

        writer.Write("Hello world");
        Console.WriteLine("Message Sent");
        Console.ReadKey();
    }
 }
}

我的服務器代碼通過打印接受的客戶端請求來確認客戶端連接。 但是由於某種原因,我無法從流中獲取數據。 快速幫助將不勝感激。

謝謝

您需要刷新流才能實際發送數據。

嘗試:

writer.Write("Hello world");
writer.Flush();

查看MSDN文檔以獲取更多信息:

同步套接字服務器: http : //msdn.microsoft.com/en-us/library/6y0e13d3.aspx異步套接字服務器: http : //msdn.microsoft.com/en-us/library/5w7b7x5f.aspx

這是一個更詳細地說明套接字的來龍去脈的網站: http : //nitoprograms.blogspot.co.uk/2009/04/tcpip-net-sockets-faq.html

在服務器端,

添加static TcpListener server; 在頂部

然后`server.Start();

        Socket soc = listener.AcceptSocket();

        Console.WriteLine("Connection successful");
        Stream s = new NetworkStream(soc);

        StreamReader reader = new StreamReader(s);
        StreamWriter writer= new StreamWriter(s);

        sw.AutoFlush = true;
        sw.WriteLine("hello world");`

在客戶端

 TcpClient client = new TcpClient("localhost", 9999);
        Stream s = client.GetStream();
        Console.WriteLine("Connection successfully received");

        StreamWriter writer = new StreamWriter(s);
        StreamReader reader = new StreamReader(s);
        sw.AutoFlush = true;
        string dis=reader.readLine();
        Console.WriteLine(dis); 

希望它現在可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM