通过IP地址与C#聊天程序。连接不同网络中的两台计算机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过IP地址与C#聊天程序。连接不同网络中的两台计算机相关的知识,希望对你有一定的参考价值。

我正在为我和我的朋友在C#中编写一个聊天程序,我不知道如何将我的计算机连接到另一个网络中的计算机。该代码在我的家庭网络中在两台计算机之间正常工作,但在两台不同的网络之间无法正常工作。我知道为什么它不起作用,我的意思是有道理,我认为我已经以某种方式使用标准网关连接我们的路由器或者其他东西,但我在互联网上找不到任何帮助我的东西。

也许C#是聊天应用程序的错误语言,但我确信它可能以某种方式。如果有人可以请告诉我这在C#中是如何工作的,或者哪种语言会更好?

    private void Form1_Load(object sender, EventArgs e)
    {
        //set up socket
        socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

        socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

        //get user IP
        textLocalIp.Text = GetLocalIP();
        //textRemoteIp.Text = GetLocalIP();
    }

    private void buttonConnect_Click(object sender, EventArgs e)
    {
        //binding Socket
        epLocal = new IPEndPoint(IPAddress.Parse(textLocalIp.Text), Convert.ToInt32(textLocalPort.Text));
        socket.Bind(epLocal);

        //connecting to remote IP
        epRemote = new IPEndPoint(IPAddress.Parse(textRemoteIp.Text), Convert.ToInt32(textRemotePort.Text));
        socket.Connect(epRemote);

        //listeninf the specific port
        buffer = new byte[1500];
        socket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCallBack), buffer);
    }
答案

好的,我不建议您使用C#聊天,它已经过时了。但你需要:

Imports System.Net.Sockets
Imports System.Threading 

你会找到一个教程:here如果你需要任何其他的教程你很容易找到for example a mobile chat app

以上是关于通过IP地址与C#聊天程序。连接不同网络中的两台计算机的主要内容,如果未能解决你的问题,请参考以下文章

同一个路由器 同一个网段的两台电脑却不能相互ping通, 两台电脑都可以上互联网

socket编程

Socket编程Java通信是这样炼成的

使用 telnet C 使用哪个 IP 连接到两台不同的计算机

有没有办法在不同网络上通过双向连接连接两台计算机(一台具有端口转发)

UDP Chat Program 不同网络不能聊天