Socket编程如何搭建一个外网可以访问的服务器
搭建外网访问,首先你要有一台外网可访问的服务器,有以下几种方法可以实现。
一、购买外网服务器。由于服务器端使用JAVA语言开发,所以外网服务器操作系统可以是Linux或Windows,这个需要你花钱购买。如果只是测试,你可以选择购买阿里云的云服务器,非常便宜。
二、还有一种方法就是你通过花生壳之类的软件进行映射你的网络,但花生壳对长城宽带之类的网络支持不是特别好,如果需要很好的支持,那也需要花钱购买。
三、如果你是通过路由器上网,并且可以操作路由器权限且使用的是电信或者是联通的网络,那可以直接在路由器里面做端口映射,这个你可以百度一下,有很多文章讲的非常清楚,这里篇幅限制,就不贴了。
四、如果你是直接通过猫上网且使用电信或联通宽带,那可以直接使用本机外网IP访问你的程序。
以上四种方法中,最稳定的还是购买外网服务器,其它都会有各种问题,你可以选择其中适合你的一种方法。希望能帮助到你
简单描述: 服务器端是等待别人连接的一端 客户端是主动连接的一端
两个QQ的例子:
1两个QQ都是客户端
2两个QQ都连接到腾讯的QQ服务器上
3两个QQ之间聊天首先QQ1 将消息发到QQ服务器上再由QQ服务器将消息发送到QQ2上
腾讯可以限制聊天内容:
在QQ1发到QQ服务器上时就进行过滤如果聊天内容不符合要求就不给你转发到QQ2上
程序源代码:
调用connect的是客户端
你重复这两句是什么目的?
bytes = newSocketReceive(recByteMsg, recByteMsgLength, 0);
recMsg = EncodingGetEncoding("GB2312")GetString(recByteMsg, 0, bytes);
bytes = newSocketReceive(recByteMsg, recByteMsgLength, 0);
recMsg = EncodingGetEncoding("GB2312")GetString(recByteMsg, 0, bytes);
如果你采用阻塞模式无须重复这样写啊,当然阻塞模式可能出现粘包问题
我们一般采用发送端设置边界标示,根据标示在接受端来区分上下包,这和IP包的包头标志是一样的道理。如果你发送的字符长度是固定的那么也可以不需要设置边界标志了。
这个涉及字符编码问题。
你可以在java端一般是Utf8格式的,c语言一般和系统一样是GBK编码的。所以需要你做一下编码转换。
服务器端接收之后,对接收到的字符串,进行编码转换。转成GBK编码,再显示,就没问题了
0条评论