- 浏览: 3904427 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
hinuliba:
...
字体背景颜色的高度修改 -
KANGOD:
最后的 -createDialog() 私有方法是怎么回事,没 ...
简单的实现listView中item多个控件以及点击事件 -
sswangqiao:
呵呵,呵呵
onActivityResult传值的使用 -
yumeiqiao:
感觉你所的不清楚 lstView.setOnTouchLi ...
listview中viewflipper的问题 -
lizhou828:
果然是大神啊!!!
Animation动画效果的实现
1. Android与PC通讯的第一个例子:
- PC: Java Server
- Android:Java Client
Java Server 源代码:
01 |
public class TCPDesktopServer implements Runnable{
|
02 |
|
03 |
public static final String SERVERIP = "192.168.0.149" ;
|
04 |
public static final int SERVERPORT = 51706 ;
|
05 |
|
06 |
public void run() {
|
07 |
try {
|
08 |
System.out.println( "S: Connecting..." );
|
09 |
|
10 |
ServerSocket serverSocket = new ServerSocket(SERVERPORT);
|
11 |
while ( true ) {
|
12 |
|
13 |
Socket client = serverSocket.accept();
|
14 |
System.out.println( "S: Receiving..." );
|
15 |
|
16 |
try {
|
17 |
BufferedReader in = new BufferedReader( new InputStreamReader(client.getInputStream()));
|
18 |
String str = in.readLine();
|
19 |
System.out.println( "S: Received: '" + str + "'" );
|
20 |
} catch (Exception e) {
|
21 |
System.out.println( "S: Error" );
|
22 |
e.printStackTrace();
|
23 |
} finally {
|
24 |
client.close();
|
25 |
System.out.println( "S: Done." );
|
26 |
}
|
27 |
|
28 |
}
|
29 |
|
30 |
} catch (Exception e) {
|
31 |
System.out.println( "S: Error" );
|
32 |
e.printStackTrace();
|
33 |
}
|
34 |
}
|
35 |
|
36 |
public static void main (String a[]) {
|
37 |
Thread desktopServerThread = new Thread( new TCPDesktopServer());
|
38 |
desktopServerThread.start();
|
39 |
}
|
40 |
} |
对上边的源代码做一些介绍:
指定Server监听的端口和服务器IP地址。
1 |
public static final String SERVERIP = "192.168.0.149" ;
|
2 |
public static final int SERVERPORT = 51706 ;
|
应用之前所指定的IP和Port创建一个ServerSocket对象。
1 |
ServerSocket serverSocket = new ServerSocket(SERVERPORT);
|
用于侦听和捕捉通过Socket连接的客户端。
1 |
Socket client = serverSocket.accept(); |
应用Socket创建BufferedReader对象,用于接收Socket Stream中的数据。
1 |
BufferedReader in = new BufferedReader( new InputStreamReader(client.getInputStream()));
|
Android Client 源代码:
01 |
InetAddress serverAddr = InetAddress.getByName( "192.168.0.149" ); //TCPServer.SERVERIP
|
02 |
Log.d( "TCP" , "C: Connecting..." );
|
03 |
Socket socket = new Socket(serverAddr, 51706 );
|
04 |
String message = "AndroidRes,Where is my Pig (Android)?" ;
|
05 |
try {
|
06 |
Log.d( "TCP" , "C: Sending: '" + message + "'" );
|
07 |
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())), true );
|
08 |
out.println(message);
|
09 |
} catch (Exception e) {
|
10 |
Log.e( "TCP" , "S: Error" , e);
|
11 |
} finally {
|
12 |
socket.close();
|
13 |
} |
对上边的源代码做一些介绍:
指定Server的IP地址。
1 |
InetAddress serverAddr = InetAddress.getByName( "192.168.0.149" );
|
应用Server的IP和端口建立Socket对象。
1 |
Socket socket = new Socket(serverAddr, 51706 );
|
根据已经建立的Socket来创建PrintWriter,将信息通过这个对象来发送给Server,其中包含了三个部分:
1 |
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())), true );
|
以上是Android与运行在PC上的Java Server通讯的例子。来源由Anddev.org提供
2. Android与PC通讯的第二个例子:
- PC: CSharp Server
- Android:Java Client
通过上边的例子,本人通过一些转换,实现了Android与CSharp Server的通讯方法。原理没有太大差异,仅仅是应用的方法稍有不同。
CSharp Server 源代码:
01 |
TcpClient ConnectedClient = ServerListener.AcceptTcpClient(); |
02 |
|
03 |
NetworkStream netStream = ConnectedClient.GetStream(); |
04 |
|
05 |
BinaryReader br = new BinaryReader(netStream);
|
06 |
|
07 |
byte [] tempByte = new byte [8192];
|
08 |
|
09 |
tempByte = br.ReadBytes(8192); |
10 |
|
11 |
string RecevieString = System.Text.Encoding.Default.GetString(tempByte);
|
对上边的源代码做一些介绍:
通过TcpListener获得的Client信息创建一个TcpClient对象。
1 |
TcpClient ConnectedClient = ServerListener.AcceptTcpClient(); |
从TcpClient对象中提取NetworkStream对象,其目的是建立Socket数据流。
1 |
NetworkStream netStream = ConnectedClient.GetStream(); |
建立BinaryReader对象为刚刚创建的NetworkStream提供一个接口,借助于这个接口可以非常方便的读取信息。
1 |
BinaryReader br = new BinaryReader(netStream);
|
读取Stream中的byte array数据,转化为string字符串。
1 |
byte [] tempByte = new byte [8192];
|
2 |
|
3 |
tempByte = br.ReadBytes(8192); |
4 |
|
5 |
string RecevieString = System.Text.Encoding.Default.GetString(tempByte);
|
Android Client 源代码:
这个Android Client所应用的方法与第一个例子中有很大区别,请各位特别注意(通过本人的反复验证,这个算是Java 与CSharp间可行的通讯方法)。
1 |
String message = "AndroidRes,Where is my Pig (Android)?" ;
|
2 |
Socket socket = new Socket( "192.168.0.149" , 51706 );
|
3 |
OutputStream ops=socket.getOutputStream(); |
4 |
DataOutputStream dos= new DataOutputStream(ops);
|
5 |
dos.write(message.getBytes()); |
6 |
dos.close(); |
对上边的源代码做一些介绍:
同样是建立Socket对象。
1 |
Socket socket = new Socket( "192.168.0.149" , 51706 );
|
根据Socket对象创建OutputStream对象,根据名称可以很容易的理解这个对象的目的,它是建立一个输出的NetworkStream。
1 |
OutputStream ops=socket.getOutputStream(); |
DataOutputStream类似于BinaryWriter,是为OutputStream建立一个接口,可以通过这个接口向Socket另外一端写数据。
1 |
DataOutputStream dos= new DataOutputStream(ops);
|
最后这两行代码是实施写的过程。
1 |
dos.write(message.getBytes()); |
2 |
dos.close(); |
此片为转载
发表评论
-
URI 转path
2019-06-26 10:41 1230转自知乎Matisse package com.zhihu ... -
权限申请
2017-09-22 13:25 1226public class PermissionActivit ... -
onPreviewFrame 相机输出格式转换yuv420p保存成图片
2015-11-25 15:59 7488在最近项目中,因为特殊需要,底层相机往外输出了i420 也 ... -
new Android's Runtime Permission
2015-11-03 21:05 1194targetSdkVersion 23 开始 使用运行时权 ... -
自定义listview 边缘效果
2015-02-28 10:58 1703static void ChangeEdgeEffect( ... -
发射打开wifi
2015-01-07 10:25 1376WifiManager wifiManager = (Wif ... -
RecyclerView
2014-11-05 13:08 1215http://www.grokkingandroid.com ... -
获取点击区域
2014-04-28 09:39 1522@Override public void getHitR ... -
speex 和libogg 编译
2014-04-03 16:17 6370下载: http://www.speex.org/down ... -
rsync 同步
2014-03-28 17:06 1802两台android 设备 进行rsy ... -
流转字符串
2014-03-11 09:49 1479public static String convertSt ... -
java simplexml 序列化
2014-03-06 13:22 5886<?xml version="1.0&quo ... -
获取其他程序的特定资源
2014-03-05 09:33 1659try { PackageManager man ... -
检测来电属于哪个sim卡
2014-02-07 10:41 1676public class IncomingCallInter ... -
使用 NDK r9 编译ffmpeg
2014-01-16 13:32 167701. 环境 ubuntu 我的是13.10 ndk r9 ... -
android h264含so
2014-01-13 11:24 1510http://download.csdn.net/downlo ... -
xml转义字符
2013-12-18 09:29 1559" " ' & ... -
字体背景颜色的高度修改
2013-12-11 10:31 4147当使用android:lineSpacingExtra= ... -
屏保的实现
2013-12-07 10:27 2729最近需要做一个屏保,开始以为很简单,因为系统本身就带了屏保功 ... -
PreferenceActivity下嵌套PreferenceScreen在其它布局中
2013-11-21 16:32 9102今天在修改系统代码的时候,系统代码用了PreferenceA ...
相关推荐
Socket连接-TCP测试:本案例通过实现定向传输图片完成连接测试,图片大小有限,功能有限,可以共案例参考,
windows 2008 R2解决socket连接不释放补丁包_time-wait过多注册表修改, Windows time_wait过多解决办法解决办法: 修改注册表中的tcpip的TIMEWAIT回收时间属性值,需要重启后生效 在HKEY_LOCAL_MACHINE\SYSTEM...
本文详细介绍了目前各平台通用的设置套接字(Socket)连接超时的办法,介绍了Linux环境下的Socket连接超时的一种实现方法。
Android Socket连接,包含心跳检测,断线重连,数据发送等等 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/78094909
易语言socket连接超时例程源码,socket连接超时例程,子程序1,socket,htons,inet_addr,Connect,closesocket,WSAStartup,setsockopt,ioctlsocket,select
VB写的一个Socket连接类,封装了Winsock API
一个java socket连接池的典型实例 SocketClient,客户端测试类 SocketAdapter继承Socket类,重新封装socket类 SocketConnectionPool,连接池管理类 StartupSocketServer,socket服务器端的主线程,负责监听端口,当有...
此文档简单介绍了Socket连接池的简单应用,以及客户端和服务端的代码实现
这是一个socket连接的demo,包括客户端和服务器端,使用了第三方的库,使socket连接变得非常方便易用!
4种方法实现socket数据转发,socket 连接http 服务器. 内有socket,select,poll,多线程等的详细实例
c#socket连接服务器,服务器与客户端互相通信,服务端侦听客户端是否掉线
Socket连接示例代码,通过客户端与服务器在本地实现端口通信,也可以在局域网实现
由线程池技术改编的socket连接池,当中包括了通过windows计数器,统计线程池性能信息。
NULL 博文链接:https://516100981.iteye.com/blog/2314314
socket连接测试并打开端口,是一个简单的工具
fx5以太网socket连接 测试ok.zip
Python编写 实现本地通信的简单UDP/TCP的socket连接的客户服务器程序 TCP的是基于Python2.7的 UDP的是基于Python3.7的
只需知道IP即可连接打印机控制打印
librtmp长时间直播socket连接断开的原因 librtmp长时间直播socket连接断开的原因 librtmp长时间直播socket连接断开的原因 librtmp长时间直播socket连接断开的原因
提供一个c# socket连接池设计的例子,解决socket并发连接限制的问题,并且提供一种设置连接超时时间的方法,默认连接超时时间是不能设置的,提供了socket网络发送数据的接口.可用于pos小票打印机通讯。