用Socket做链接的C#服务器和android客户端,不在同一个电脑上就连不上了
socket是通过ip地址和端口号链接的
在同一个局域网内比如有一台服务器,两台客户端。
服务器IP:1000112,开放端口为8888
客户端的socket就应该这样写
socketAddress address=new IntSocketAddress("1000112",8888);
Socket socket=new Socket(address,int); //这句会让你处理异常,可以处理超时链接,int是时间,单位为毫秒
同一台电脑的话IP地址其实是相同的,所以能够链接。
有可能是绑定地址的问题。
java SE开发肯定做过吧,你在PC端写一个Java的服务器看看能不能连接上。
还有更方便的办法就是电脑下载一个网络调试助手,然后电脑当作服务器,手机连接电脑。
如果连接上了,那就说明是服务端没有开启(问题1),如果没连接上那就是客户端的问题了(问题2)。
问题1:暂时没整过,想不出解决办法。
问题2:检查客户端,代码是否正确(包括是否有网络访问权限,手机是否连接网络等问题)。
1、android上的服务器分两种:
① 用 java 写的,这种比较简单,但是需要注意的它的代码已经被转换成了大端了,pc上用c++写传结构体;
② 用 c/c++ 写的,这种方式进行和pc上的通信比较的方便,客户端和服务器段可以都通过结构来传递,唯一需要考虑的是字节对其的问题,可以用两个预处理指令(可以跨平台的)处理;
2、源码的话,我虽然有但是属于公司的项目代码,不方便的;
我是ndk吧的吧主,希望大家关注一下ndk吧,有问题的话也可以到里面留言哦,ndk吧的链接:
http://tiebabaiducom/fkw=ndk 谢谢!
11什么是Socket Socket
是一种抽象层,应用程序通过它来发送和接收数据,使用Socket可以将应用程序添加到网络中,与处于同一网络中的其他应用程序进行通信。简单来说,Socket提供了程序内部与外界通信的端口并为通信双方的提供了数据传输通道。
12Socket的分类
根据不同的的底层协议,Socket的实现是多样化的。本指南中只介绍TCP/IP协议族的内容,在这个协议族当中主要的Socket类型为流套接字(streamsocket)和数据报套接字(datagramsocket)。流套接字将TCP作为其端对端协议,提供了一个可信赖的字节流服务。数据报套接字使用UDP协议,提供数据打包发送服务。
下面,我们来认识一下这两种Socket类型的基本实现模型。
二、Socket 基本通信模型
详细
一般你客户端先发再收,服务端先收再发。
客户端:发送→ 接收,服务端:接收→发送。
这样就不会两边一直堵着等待对方发送数据过来啦。
经验之谈。希望能帮到你,欢迎追问。
0条评论