简体   繁体   English

无法在C#中连接2台计算机

[英]Unable to connect 2 computers in c#

I am trying to send a message between 2 computers. 我正在尝试在两台计算机之间发送消息。 I have been able to establish connection but for some weird reason i have been unable to acquire stream. 我已经能够建立连接,但是由于某些奇怪的原因,我无法获取流。

Server Code 服务器代码

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());
    }
 }
}

Client Code 客户代码

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();
    }
 }
}

My server code confirms client connection by printing client request accepted. 我的服务器代码通过打印接受的客户端请求来确认客户端连接。 However for some reason i am unable to acquire data from stream. 但是由于某种原因,我无法从流中获取数据。 Quick Help would be really appreciated. 快速帮助将不胜感激。

Thank you 谢谢

You need to flush the stream in order to actually send the data. 您需要刷新流才能实际发送数据。

Try: 尝试:

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

Take a look at the MSDN docs for more information: 查看MSDN文档以获取更多信息:

Synchronous socket server: http://msdn.microsoft.com/en-us/library/6y0e13d3.aspx Asynchronous socket server: http://msdn.microsoft.com/en-us/library/5w7b7x5f.aspx 同步套接字服务器: http : //msdn.microsoft.com/en-us/library/6y0e13d3.aspx异步套接字服务器: http : //msdn.microsoft.com/en-us/library/5w7b7x5f.aspx

Here's a site that explains in more detail the ins and outs of sockets: http://nitoprograms.blogspot.co.uk/2009/04/tcpip-net-sockets-faq.html 这是一个更详细地说明套接字的来龙去脉的网站: http : //nitoprograms.blogspot.co.uk/2009/04/tcpip-net-sockets-faq.html

In server side, 在服务器端,

add static TcpListener server; 添加static TcpListener server; at the top 在顶部

Then `server.Start(); 然后`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");`

In client side 在客户端

 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); 

Hope it will work now. 希望它现在可以工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM