当我在互联网上尝试时,我的套接字应用程序无法连接

时间:2019-12-24 05:56:15

标签: c# sockets server client

我使用c#(.net框架)对套接字应用程序进行了编程,但是当我在本地系统或专用网络上尝试它时,它运行良好,但是当我在两个使用Internet(公共网络)的不同系统上尝试它时,它就永远不会连接 它是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        SocketPermission me = new SocketPermission(NetworkAccess.Accept, TransportType.Tcp, "", SocketPermission.AllPorts);
        Socket mes =
            new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp); 
        Socket des;


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                IPHostEntry iphost = Dns.GetHostEntry("");
                IPAddress ipaddr = iphost.AddressList[0];
                MessageBox.Show(ipaddr.ToString());
                IPEndPoint iep = new IPEndPoint(ipaddr, 44444);
                label1.Text = ipaddr.ToString();
                mes.Bind(iep);
                mes.Listen(4);
                des = mes.Accept();
                MessageBox.Show("connected");
            }
            catch (Exception err)
            {
                MessageBox.Show(err.ToString());
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                IPHostEntry iphost = Dns.GetHostEntry("");
                IPAddress ipaddr = iphost.AddressList[0];
                MessageBox.Show(ipaddr.ToString());
                IPEndPoint iep = new IPEndPoint(IPAddress.Parse(textBox1.Text), 44444);
                mes.Connect(iep);
            }
            catch (Exception err)
            {
                MessageBox.Show(err.ToString());
            }
        }
    }
}

textbox1返回服务器ipv6。 我使用 socket权限打开tcp的所有端口。 和 ipv6 ,因为它是唯一的。

0 个答案:

没有答案