问答求助

关注:516

当前位置:足球投注 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档?!咀詈妹挥懈郊?,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 446|回复: 8
发新帖

[基本操作] 客户端连接服务器怎么初始化?

[复制链接]  [移动端链接]
4四处流浪
361/500
排名
10601
昨日变化
2

足球投注 www.zjrxh.com 29

主题

104

帖子

361

积分

Rank: 4

UID
243169
好友
0
蛮牛币
109
威望
0
注册时间
2017-9-13
在线时间
146 小时
最后登录
2018-4-23
跳转到指定楼层
楼主
发表于 2018-4-8 09:36:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5蛮牛币
在socket中怎么实现客户端连接服务器怎么初始化?之前不知道还有一个初始化过程,这步是怎么实现的?哪位大神指导下

4四处流浪
365/500
排名
8019
昨日变化
1

2

主题

114

帖子

365

积分

Rank: 4

UID
234410
好友
1
蛮牛币
633
威望
0
注册时间
2017-7-26
在线时间
115 小时
最后登录
2018-4-23
沙发
发表于 2018-4-8 09:36:31 | 只看该作者
这些玩意网上一搜一大把:如下(其中没有的变量自己加)
IPAddress m_nIP = IPAddress.Parse("127.0.0.1");
Socket pLocallSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
        
pLocallSocket.Connect(new IPEndPoint(m_nIP,m_nProt));
Console.WriteLine("连接服务器成功!");
int pResultSize = pLocallSocket.Receive(pResult);
Console.WriteLine("接收服务器消息:{0}",Encoding.Default.GetString(pResult,0, pResultSize));
[发帖际遇]: 随幻Kaller 在论坛发帖时没有注意,被小偷偷去了 1 蛮牛币. 幸运榜 / 衰神榜

4四处流浪
361/500
排名
10601
昨日变化
2

29

主题

104

帖子

361

积分

Rank: 4

UID
243169
好友
0
蛮牛币
109
威望
0
注册时间
2017-9-13
在线时间
146 小时
最后登录
2018-4-23
板凳
 楼主| 发表于 2018-4-8 10:18:28 | 只看该作者
随幻Kaller 发表于 2018-4-8 10:06
这些玩意网上一搜一大把:如下(其中没有的变量自己加)
IPAddress m_nIP = IPAddress.Parse("127.0.0.1"); ...

为什么我的到了int pResultSize = pLocallSocket.Receive(pResult);这一步的时候就不会往下执行了,但是服务器都有数据发送过来,就是接收不到,这是什么原因?

4四处流浪
365/500
排名
8019
昨日变化
1

2

主题

114

帖子

365

积分

Rank: 4

UID
234410
好友
1
蛮牛币
633
威望
0
注册时间
2017-7-26
在线时间
115 小时
最后登录
2018-4-23
地板
发表于 2018-4-8 10:30:31 | 只看该作者
情况有很多
这个是阻塞的
int pResultSize = pLocallSocket.Receive(pResult); 在这里如果你没有开其他的线程 那么肯定不往下运行  是对的
如果你是在Unity中 那么也会卡在这个函数中 其他所有行为都不会运行 开一个协程也是如此(协程也是单线程)
你可以创建一个线程在Unity中  不过socket中有一个异步接受函数 就不用这个了
而你服务器发送回来没有接受  首先  你的服务器是云服务器还是你自己开的本地服务器 还是你用的是localhost?

4四处流浪
361/500
排名
10601
昨日变化
2

29

主题

104

帖子

361

积分

Rank: 4

UID
243169
好友
0
蛮牛币
109
威望
0
注册时间
2017-9-13
在线时间
146 小时
最后登录
2018-4-23
5#
 楼主| 发表于 2018-4-8 11:24:36 | 只看该作者
随幻Kaller 发表于 2018-4-8 10:30
情况有很多
这个是阻塞的
int pResultSize = pLocallSocket.Receive(pResult); 在这里如果你没有开其他的 ...

我这用的是localhost

4四处流浪
365/500
排名
8019
昨日变化
1

2

主题

114

帖子

365

积分

Rank: 4

UID
234410
好友
1
蛮牛币
633
威望
0
注册时间
2017-7-26
在线时间
115 小时
最后登录
2018-4-23
6#
发表于 2018-4-8 13:42:01 | 只看该作者
没接收到的话 问题有很多  你把代码发上来看看

4四处流浪
361/500
排名
10601
昨日变化
2

29

主题

104

帖子

361

积分

Rank: 4

UID
243169
好友
0
蛮牛币
109
威望
0
注册时间
2017-9-13
在线时间
146 小时
最后登录
2018-4-23
7#
 楼主| 发表于 2018-4-8 13:58:29 | 只看该作者
随幻Kaller 发表于 2018-4-8 13:42
没接收到的话 问题有很多  你把代码发上来看看

private static byte[] result = new byte[1024];
        static void Main(string[] args)
        {
            //设定服务器IP地址  
            IPAddress ip = IPAddress.Parse("172.16.1.254");
            Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                clientSocket.Connect(new IPEndPoint(ip, 4530)); //配置服务器IP与端口  
                Console.WriteLine("连接服务器成功");
            }
            catch
            {
                Console.WriteLine("连接服务器失败,请按回车键退出!");
                return;
            }

            //通过clientSocket接收数据  
            int receiveLength = clientSocket.Receive(result);//执行到此步骤不在继续
            Console.WriteLine("接收服务器消息:{0}", Encoding.ASCII.GetString(result, 0, receiveLength));
            //通过 clientSocket 发送数据  
            for (int i = 0; i < 10; i++)
            {
                try
                {
                    Thread.Sleep(1000);    //等待1秒钟  
                    string sendMessage = "client send Message" + DateTime.Now;
                    clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));
                    Console.WriteLine("向服务器发送消息:{0}" + sendMessage);
                }
                catch
                {
                    clientSocket.Shutdown(SocketShutdown.Both);
                    clientSocket.Close();
                    break;
                }
            }
            Console.WriteLine("发送完毕,按回车键退出");
            Console.ReadLine();
        }
    }

4四处流浪
365/500
排名
8019
昨日变化
1

2

主题

114

帖子

365

积分

Rank: 4

UID
234410
好友
1
蛮牛币
633
威望
0
注册时间
2017-7-26
在线时间
115 小时
最后登录
2018-4-23
8#
发表于 2018-4-8 15:19:28 | 只看该作者
首先   Console.WriteLine("接收服务器消息:{0}", Encoding.ASCII.GetString(result, 0, receiveLength));
这句代码之后在接收到服务器信息之前是不会执行的
如果你的“连接服务器成功”字样输出的话  那么可能是你服务器那边有问题
服务器那边的代码也拿出来看看吧

排名
749
昨日变化

215

主题

1万

帖子

1万

积分

Rank: 12Rank: 12Rank: 12

UID
78862
好友
12
蛮牛币
120272
威望
0
注册时间
2015-3-11
在线时间
2561 小时
最后登录
2018-4-23
QQ
9#
发表于 2018-4-9 09:13:09 来自Mobile--- | 只看该作者
其实就是new socket的过程,再加上 _socket.Bind(new IPEndPoint(IPAddress.Any, port));             _socket.Listen(100);             _socket.BeginAccept(new AsyncCallback(OnAccept), _socket);等。

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 足球投注 返回列表