量子通信龙头股服务器是写好的吗?用不用自己写socket

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
socket.io只能和node.js服务器通信,WebSocket我在使用的时候发出的http请求头的origin字段居然是file://……所以我想问还有没有其他办法?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
socket.io 是基于websocket的一个前后端封装。按理说,websocket不应该有问题,跟后端使用什么语言没什么关系。
还可以使用flash来进行socket通信。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果你是使用自定义协议和C socket服务器通信的话,可以嵌套一个FLASH,flash里面是可以直接使用socket io来通信的,要是你不愿意嵌套一个flash,可以使用php,php也支持直接的socket io通信
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。怎么写一个socket编程,不管是udp的还是tcp的,可以不在同一个局域网中通信?_百度知道
怎么写一个socket编程,不管是udp的还是tcp的,可以不在同一个局域网中通信?
以前做练习的时候,都是同一个网段,同一个局域网中的没连接外网,,现在想实现一个和qq一样的socket编程,一个在另一个内网中,另一个在那边的内网,都不在公网中,谁给提供一下思路...
以前做练习的时候 ,都是同一个网段,同一个局域网中的 没连接外网,,现在想实现一个和qq一样的socket编程,一个在另一个内网中,另一个在那边的内网 ,都不在公网中,谁给提供一下思路??例如一个 在中国 ,一个在美国 两个怎么通信??需要在公网中弄个服务器?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自电脑网络类芝麻团
网络通讯很简单的道理 通许必须有一方是公网地址 这个所谓的公网地址简单理解就是互联网上公开的地址,能够背直接访问的IP地址那么你如果想实现中国到美国的通讯(下面简称2方通讯)方法有一下几种方法1:中国这边或者美国那边至少一方是具有公网IP地址的 具有公网地址的作为服务端 另外一方作为客户端连接(具体实现就是公网一方监听自己的公网地址上的某个端口 客户端直接连接对方的公网地址跟端口即可)(
A&=====&B(公网地址)
)方法2:2方都具有公网地址 那就更简单 互相连接对方的公网地址跟端口即可(A(公网)&======&B(公网))方法3:2方都没有公网地址(但是其中一方或者双方都能在路由器上做端口映射 这个问题就转化成了方法2 或者方法1)(A(端口映射)&===========B)方法4:2方都没有公网地址也无法做端口映射 这个时候就要假设一个中转的服务器
2方都去连接那个中转服务器 通过服务来转发消息(A(内网)&===============(消息中转服务器)============&B(内网))目前QQ就是用的这样的消息传送方式
需要去买一个公网的ip地址吗???
一方能做端口映射是最好也是最便宜的做法了
2边都没办法做的话 只能购买一个很便宜的主机空间作为中转服务器了有一个中转服务器可以实现离线留言的功能
貌似好像普通的托管主机不支持.exe程序的执行
怎么端口映射啊???在程序里写,还是配置路由器
在路由器里面 或者在你的网关电脑上配置一条静态路由
我的网络貌似 已经路由了n边了
。。。映射有用吗?
看看你电脑有没有防火墙先关一下
我的意思是说,我现在主机上的ip地址,从真正的接入互联网的那根线到我的电脑这 ,不知道被“路由”了几次,才分过来的,我要是映射端口,能映射到互联网上吗?
每一级都要做映射,按你说的情况你应该是内网中内网的内网
采纳数:102
获赞数:455
需要有一个登陆服务器,不管客户端在哪里登陆后,会在服务器登记其IP和端口,其用户端需要联系对方时,可将消息现发给服务器,由服务器转发对方;或者从服务器获取对方的ip和端口,直接发送过去。
采纳数:34
获赞数:207
主要是利用了路由器的映射关系,而两个路由器之间的通讯对你是没有关系的,也就是黑盒原理!你只要有一个公网的服务器就可以,1、一种是客户端连接服务器进行通讯,服务器转发2、是服务器把两个通讯客户端的路由映射发给对方,并维护这个路由器映射,这样两个客户端可以相互通讯!!!
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。移动app 为什么选择socket通信而不选择http_百度知道
移动app 为什么选择socket通信而不选择http
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自知道合伙人认证行家
电脑类行家
采纳数:78234
获赞数:77667
泉州兴瑞发公司最佳优秀员工。
手机客户端 与服务器通信,通常是CS模式,当然是用普通socket了,HTTP其实也是socket,只不过他是基于TCP的短连接,功能有限,除了可以剔除暂时不用的链路外,优点不明显,相反缺点多:HTTP采用明文传输,安全方面不行,socket可以采用自定义协议,所以更加安全.HTTP通常是短连接,没法收到服务器主动推送的消息,socket则可以,通常是常连接HTTP传输比较占用流量,而用socket则只是结构体对齐,省去了变量的名词HTTP解析速度慢,而用socket则通常不需要解析,只是简单的判断消息类型,即可.当然用HTTP开发速度快,很容易就完成一个APP界面
socket连接和http连接的区别HTTP协议:简单对象访问协议,对应于应用层,HTTP协议是基于TCP连接的tcp协议:对应于传输层ip协议:对应于网络层TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,才能使用TCP/IP协议。http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。socket通信服务器端怎么写_百度知道
socket通信服务器端怎么写
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自知道合伙人认证行家
影视类行家
采纳数:20366
获赞数:146721
毕业于浙江广厦,有一定的电脑专业基础和两年工作经验,读过相关书籍多本
Android客户端与PC服务器实现Socket通信(wifi)本文介绍Android终端持续扫描AP信息并发送给服务器端的实现。首先基于TCP协议在Android终端和PC两端之间形成网络虚拟链路。使用ServerSocket创建TCP服务器端,然后在Android客户端使用Socket的构造器来连接服务器。其中Android终端通过WIFI连接和PC处于同一局域网。1. PC服务器启用ServerSocket两个通信实体在建立虚拟链路之前,需要有一方先准备好,主动接受来自其他通信实体的连接请求。使用ServerSocket对象监听来自客户端的Socket连接//创建ServerSocket对象//by wayne from ServerSocket ss = new ServerSocket(30000);//监听来自客户端的请求while(true){Socket s = ss.accept();…}如果没有连接,则将一直处于等待状态。当接收到连接请求后,获取消息到输入流,并保存到文件。//接收客户端消息//by wayne from BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));SBufferedWriter bw = new BufferedWriter(new FileWriter(&D:/ApInfo&+ (i++) +&.txt&));while ((str = in.readLine()) != null) {System.out.println(str);bw.write(str);bw.newLine();} 2. Android终端使用Socket通信客户端使用Socket的构造器连接服务器,指定服务器IP和端口号就可以了。Socket s = new Socket(“192.168.1.100”, 30000);这样服务器端的accept()方法就得到响应,从而向下执行,服务器端和客户端就形成了一对互相连接的Socket。再进行通信时就没有服务器和客户端之分了,都是通过输入输出流进行通信。详细步骤采用Handler和TimerTask来定时扫描AP信息并发送给服务器端。TimerTask规定了到达指定的时间所要进行的任务。TimerTask task = new TimerTask(){public void run() {Message message = new Message();message.what = 1;handler.sendMessage(message);}};handler传递message内容:Handler handler = new Handler(){public void handleMessage(Message msg) {switch (msg.what) {case 1:// 执行定时器时间到了之后由handler传递的任务}super.handleMessage(msg);}};因为需要持续执行扫描任务,所以启用新线程执行定时任务//启动单独线程定时向服务器发送AP信息//by wayne from new Thread(){@Overridepublic void run() {// TODO Auto-generated method stubtimer.schedule(task, ); //在2秒后每10秒执行一次定时器中的方法}}.start();接下来扫描AP信息并发送给服务器端,然后将结果保存。WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);wifiManager.startScan();mWifiList = wifiManager.getScanResults();由WifiManager说明可知,它可以用于处理已配置的网络,当前连接的网络及AP信息的扫描等情况。This class provides the primary API for managing all aspects of Wi-Fi connectivity. Get an instance of this class by calling Context.getSystemService(Context.WIFI_SERVICE). It deals with several categories of items:The list of configured networks. The list can be viewed and updated, and attributes of individual entries can be modified.The currently active Wi-Fi network, if any. Connectivity can be established or torn down, and dynamic information about the state of the network can be queried.Results of access point scans, containing enough information to make decisions about what access point to connect to.It defines the names of various Intent actions that are broadcast upon any sort of change in Wi-Fi state.向服务器发送消息:socket = new Socket(&192.168.1.211&,30000);//向服务器端发送消息PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);out.println(message);其中message为获取的AP信息测试收到的信息格式为:SSID: ICIS_LAB, BSSID: 1c:af:f7:9a:65:e4, capabilities: [WPA-PSK-TKIP+CCMP], level: -80, frequency: 2
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客分类:
Server端程序:
import java.net.*;
import java.io.*;
public class Server
private ServerS
private BufferedR
private PrintW
public Server()
ss=new ServerSocket(10000);
while(true)
socket = ss.accept();
String RemoteIP = socket.getInetAddress().getHostAddress();
String RemotePort = ":"+socket.getLocalPort();
System.out.println("A client come in!IP:"+RemoteIP+RemotePort);
in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
String line = in.readLine();
System.out.println("Cleint send is :" + line);
out = new PrintWriter(socket.getOutputStream(),true);
out.println("Your Message Received!");
out.close();
in.close();
socket.close();
}catch (IOException e)
out.println("wrong");
public static void main(String[] args)
new Server();
Client端程序:
import java.io.*;
import java.net.*;
public class Client
public Client()
System.out.println("Try to Connect to 127.0.0.1:10000");
socket = new Socket("127.0.0.1",10000);
System.out.println("The Server Connected!");
System.out.println("Please enter some Character:");
BufferedReader line = new BufferedReader(new
InputStreamReader(System.in));
out = new PrintWriter(socket.getOutputStream(),true);
out.println(line.readLine());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(in.readLine());
out.close();
in.close();
socket.close();
}catch(IOException e)
out.println("Wrong");
public static void main(String[] args)
new Client();
qulinke1230
浏览: 5280 次
来自: 深圳
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 通信原理基础知识 的文章

 

随机推荐