androidpcsocket
Ⅰ PC服务器端和android手机客户端socket通信问题
1. PC服务器启用ServerSocket
两个通信实体在建立虚拟链路之前,需要有一方先准备好,主动接受来自其他通信实体的连接请求。
使用ServerSocket对象监听来自客户端的Socket连接。
//创建ServerSocket对象
ServerSocket ss = new ServerSocket(30000);
//监听来自客户端的请求
while(true){
Socket s = ss.accept();
…
}
如果没有连接,则将一直处于等待状态。当接收到连接请求后,获取消息到输入流,并保存到文件。
//接收客户端消息
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String str;
BufferedWriter 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传递的任务
break;
}
super.handleMessage(msg);
}
}
接下来扫描AP信息并发送给服务器端,然后将结果保存。
WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);
wifiManager.startScan();
mWifiList = wifiManager.getScanResults();
由WifiManager说明可知,它可以用于处理已配置的网络,当前连接的网络及AP信息的扫描等情况。
向服务器发送消息:
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: 2437
Ⅱ android开发中,android虚拟机作为服务器与pc客户端实现socket网络通信中,android虚拟机的ip是多少
从exlipse启动的android虚拟机访问本机上的ip:10.0.2.2
Ⅲ Android 之间能否通过 socket 进行通信.
第一个问题:这是可以的,android通过socket访问本机服务器PC, ip是10.0.2.2。
第二哥问题:用ServerSocket建立一个对象 ServerSocket serverSocket = new ServerSocket(serverListenPort, connectionMaxLength, InetAddress.getByName(serverIpString));
再加一个监听Socket incoming = serverSocket.accept();就可以检测客户端发过来的连接请求,之后使用流就可以完成他们之间的通信了。
原创手打,thanku
Ⅳ Android 与电脑的Socket通信为什么不能接收数据
按照你的描述,你首先调用Socket(adderss,port)生成了一个socket,然后你要调用connect连接服务端,connect返回成功后才能通信。不知道你有没有connect。
Ⅳ android服务端与电脑pc上c++的客户端 实现socket通信
1、android上的服务器分两种:
① 用 java 写的,这种比较简单,但是需要注意的它的代码已经被转换成了大端了,pc上用c++写传结构体;
② 用 c/c++ 写的,这种方式进行和pc上的通信比较的方便,客户端和服务器段可以都通过结构来传递,唯一需要考虑的是字节对其的问题,可以用两个预处理指令(可以跨平台的)处理;
2、源码的话,我虽然有但是属于公司的项目代码,不方便的;
我是ndk吧的吧主,希望大家关注一下ndk吧,有问题的话也可以到里面留言哦,ndk吧的链接:
http://tieba..com/f?kw=ndk 谢谢!
Ⅵ 手机作为客户端,电脑作为服务器进行android socket通信
1.PC服务器启用ServerSocket两个通信实体在建立虚拟链路之前,需要有一方先准备好,主动接受来自其他通信实体的连接请求。使用ServerSocket对象监听来自客户端的Socket连接。//创建ServerSocket对象ServerSocketss=newServerSocket(30000);//监听来自客户端的请求while(true){Sockets=ss.accept();…}如果没有连接,则将一直处于等待状态。当接收到连接请求后,获取消息到输入流,并保存到文件。//接收客户端消息BufferedReaderin=newBufferedReader(newInputStreamReader(client.getInputStream()));Stringstr;BufferedWriterbw=newBufferedWriter(newFileWriter("D:/ApInfo"+(i++)+".txt"));while((str=in.readLine())!=null){System.out.println(str);bw.write(str);bw.newLine();}2.Android终端使用Socket通信客户端使用Socket的构造器连接服务器,指定服务器IP和端口号就可以了。Sockets=newSocket(“192.168.1.100”,30000);这样服务器端的accept()方法就得到响应,从而向下执行,服务器端和客户端就形成了一对互相连接的Socket。再进行通信时就没有服务器和客户端之分了,都是通过输入输出流进行通信。详细步骤:采用Handler和TimerTask来定时扫描AP信息并发送给服务器端。TimerTask规定了到达指定的时间所要进行的任务。TimerTasktask=newTimerTask(){publicvoidrun(){Messagemessage=newMessage();message.what=1;handler.sendMessage(message);}};handler传递message内容:Handlerhandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1://执行定时器时间到了之后由handler传递的任务break;}super.handleMessage(msg);}}接下来扫描AP信息并发送给服务器端,然后将结果保存。WifiManagerwifiManager=(WifiManager)getSystemService(WIFI_SERVICE);wifiManager.startScan();mWifiList=wifiManager.getScanResults();由WifiManager说明可知,它可以用于处理已配置的网络,当前连接的网络及AP信息的扫描等情况。向服务器发送消息:socket=newSocket("192.168.1.211",30000);//向服务器端发送消息PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(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:2437
Ⅶ 通过socket通讯实现安卓虚拟机与pc之间点对点通讯!
完整代码倒是没有,虚拟机如果NAT的话做好端口映射,或者直接直接Bridged桥接进网络就行
之后用socket建立连接就可以了。
做过虚拟机跟PC的socket通讯,也做过PC跟安卓机的通讯。
这是一点建议,希望有帮到你!
Ⅷ 如何用socket实现android手机与手机之间的通信
有两种方案:
1、在PC机上建立服务器,手机与手机之间的通信通过服务器进行中转
2、一部手机作为服务器,另一部手机作为客户端接入该手机
一般用第一种方案,示例代码如下:
1、pc端:
serverSocket=new ServerSocket(5648); //在5648端口进行侦听
Socket sk = serverSocket.accept();//如果有接入,则创建对应的socket;
2、手机端:
socket=new Socket("tobacco5648.xicp.net",5648);//连接socket
3、消息输入输出:
pw=new PrintWriter(socket.getOutputStream()); //消息输出
pw.println("发送消息");
pw.flush();
br=new BufferedReader(new InputStreamReader(socket.getInputStream())); //消息接收
while((str=br.readLine())!=null){
//接收消息
}
Ⅸ android手机端程序与pc端c程序进行socket通信问题
这是说你的网络连接的相关的程序写在了主线程里面,在 android里面是不可以这样的因为主线程是ui线程这种耗时操作是不能写在主线程中,否则界面会出现卡顿,所以你应该把你的socket操作写在另外一个线程中 也就是 new thread(){ public void run()
{}}.start();
把你的socket操作写在run方法中
Ⅹ android软件开发中 实现手机与PC用socket通信,那手机发送给PC的若干数据,PC怎样才
自己定义一个‘协议’;
比如:
command[用户登录]
username=admin
password=456
当然这比较费神,可以采用xml或json做数据交换格式。
两边只需要序列化和反序列化即可,就像操作bean一样。
另外,也可以采用Serializable序列化,ObjectOutputStream 和 ObjectInputStream 将对象通过网络传输。