yxlovemoney
2017-02-24 07:44
采纳率: 0%
浏览 1.3k

请问SOCKET程序如何才能在亚马逊云主机上使用

情况是这样的,在亚马逊申请了云主机,
也做了基本的设置
图片说明

也设置好了弹性IP,
图片说明

设置了安全组
图片说明
图片说明

听说VPC也要设置些什么,因为这里不知需要设置些什么,就随便弄了下
图片说明


然后下面是我的SOCKET程序的部分主要片段
服务端:


            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 10000);// 
            // 创建套接字
            serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            // 绑定网络端点IPEndPoint
            serverSocket.Bind(ipep);//
            // 监听,参数为请求队列中的最大请求数
            serverSocket.Listen(10);

            while (true)
            {
                try
                {
                    // 接收客户的连接请求。   
                    clientSocket = serverSocket.Accept();
                    MessageBox.Show(clientSocket.RemoteEndPoint.ToString());
                    clientThread = new Thread(new ThreadStart(ReceiveData));
                    clientThread.Start();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("listening Error: " + ex.Message);
                }
            }

客户端:

 // 通过主机IP地址和端口号,形成到服务的连接点
            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(/*"183.31.134.37"*/"52.24.87.83"), 10000);
            // 创建套接字
            clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            //
            try
            {
                clientSocket.Connect(ipep);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("connect error: " + ex.Message);
                return;
            }

            while (true)
            {
                // 接收服务器信息
                int bufLen = 0;
                try
                {
                    // 获取接收到的数据长度
                    bufLen = clientSocket.Available;

                    clientSocket.Receive(data, 0, bufLen, SocketFlags.None);
                    if (bufLen == 0)
                    {
                        continue;
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("Receive Error:" + ex.Message);
                    return;
                }

            }

当把自己的服务端程序 放到亚马逊主机运行后,在其它电脑开启客户端进行连接,是连接不上的,请问下这是什么原因?
找了不少资料,也作了不少云主机设置的改变,但还是连接不上,虽然IP可以在命令行PING通,但程序就是连不上。
但上面的设置全部都是云主机启动之后在后台设置的,而且在部分地方也不知设置得到底对不对。

麻烦各位能支支招,先谢谢了。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • oyljerry 2017-02-24 08:25

    一个是检查你的程序所在的机器IP跟你PING的IP是同一个机器
    另一个就是亚马逊的安全策略,是否允许对应端口访问。
    这个问题还可以给亚马逊提ticket,让他们协助网络诊断

    点赞 评论

相关推荐 更多相似问题