- 浏览: 3954694 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1344转自知乎Matisse package com.zhihu ... -
权限申请
2017-09-22 13:25 1274public class PermissionActivit ... -
onPreviewFrame 相机输出格式转换yuv420p保存成图片
2015-11-25 15:59 7609在最近项目中,因为特殊需要,底层相机往外输出了i420 也 ... -
new Android's Runtime Permission
2015-11-03 21:05 1251targetSdkVersion 23 开始 使用运行时权 ... -
自定义listview 边缘效果
2015-02-28 10:58 1754static void ChangeEdgeEffect( ... -
发射打开wifi
2015-01-07 10:25 1451WifiManager wifiManager = (Wif ... -
RecyclerView
2014-11-05 13:08 1292http://www.grokkingandroid.com ... -
获取点击区域
2014-04-28 09:39 1593@Override public void getHitR ... -
speex 和libogg 编译
2014-04-03 16:17 6416下载: http://www.speex.org/down ... -
rsync 同步
2014-03-28 17:06 1846两台android 设备 进行rsy ... -
流转字符串
2014-03-11 09:49 1563public static String convertSt ... -
java simplexml 序列化
2014-03-06 13:22 5990<?xml version="1.0&quo ... -
获取其他程序的特定资源
2014-03-05 09:33 1701try { PackageManager man ... -
检测来电属于哪个sim卡
2014-02-07 10:41 1743public class IncomingCallInter ... -
使用 NDK r9 编译ffmpeg
2014-01-16 13:32 168611. 环境 ubuntu 我的是13.10 ndk r9 ... -
android h264含so
2014-01-13 11:24 1561http://download.csdn.net/downlo ... -
xml转义字符
2013-12-18 09:29 1606" " ' & ... -
字体背景颜色的高度修改
2013-12-11 10:31 4243当使用android:lineSpacingExtra= ... -
屏保的实现
2013-12-07 10:27 2832最近需要做一个屏保,开始以为很简单,因为系统本身就带了屏保功 ... -
PreferenceActivity下嵌套PreferenceScreen在其它布局中
2013-11-21 16:32 9189今天在修改系统代码的时候,系统代码用了PreferenceA ...
相关推荐
在高并发的网络环境中,频繁地创建和销毁Socket连接会导致大量的系统资源浪费,影响整体性能。为了解决这个问题,开发人员通常会使用连接池来管理和复用已建立的Socket连接。 首先,我们来看一下Socket的基本概念。...
Socket连接池是网络编程中一个重要的优化手段,它在C#中主要应用于提高网络通信的效率和稳定性。本文将深入探讨“C# Socket连接池”的实现原理、优势以及如何利用线程池技术来构建和优化它。同时,我们也会提及...
Socket连接在IT行业中是网络编程中的重要组成部分,主要用于实现客户端与服务器之间的通信。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它是Socket连接常用的底层...
在本场景中,“Socket连接控制打印机输出”指的是利用Socket连接远程打印机,仅需知道打印机的IP地址,即可实现对打印机的打印控制。这种方式通常适用于局域网或互联网环境中的设备管理,比如远程办公或分布式打印...
无论是Linux还是Windows操作系统,开发者都需要了解如何判断一个Socket连接的状态,以便于处理异常情况,保证程序的稳定性和可靠性。本文将深入探讨在Linux和Windows环境下,如何通过编程来检测Socket连接是否已断开...
Java Socket连接池是一种优化网络通信性能的技术,它允许应用程序复用已经建立的Socket连接,从而减少因频繁创建和销毁Socket连接而产生的开销。在高并发的服务器环境中,Socket连接池能够有效地提升系统效率和响应...
### Socket连接池的简单应用 #### 一、引言 在网络通信中,Socket作为一种基本的通信方式被广泛应用。然而,在实际开发过程中,直接使用系统自带的Socket库可能会遇到各种复杂性和性能上的挑战。例如,频繁地建立...
本篇文章将深入探讨VB中封装Winsock API的Socket连接类,帮助你理解其工作原理和应用。 Winsock,即Windows Socket,是微软为Windows操作系统提供的TCP/IP协议接口。它提供了一套标准的应用程序编程接口(API),...
Socket连接管理器是一种在计算机网络编程中用于管理多个Socket连接的工具或框架。它通常用于服务器端,帮助处理并发客户端的连接请求,有效地管理和维护这些连接的状态,以便于数据的高效传输。在这个场景中,"一个...
本文将详细解析"iOS下的Socket连接demo",并介绍相关的知识点。 首先,Socket通常被称为套接字,是应用层与传输层之间的一个抽象接口,允许应用程序通过网络发送和接收数据。它提供了进程间通信(IPC)的能力,使得...
在这个"Socket连接示例代码"中,我们将深入探讨Socket的基本概念、工作原理以及如何通过客户端和服务器进行本地或局域网通信。 首先,Socket在计算机网络中扮演着桥梁的角色,它允许两个程序(通常是一个服务器和一...
在Android开发中,实现“网口打印机的Socket连接和打印测试数据”涉及到多个技术点,主要涵盖网络通信、设备交互和错误处理等方面。以下是对这些知识点的详细解释: 1. **Socket通信**: - Socket是网络编程的基础...
本主题将深入探讨“C# Socket连接服务器”的相关知识,包括如何建立连接、发送和接收数据,以及如何检测客户端的在线状态。 首先,Socket在计算机网络中是一种基于TCP/IP协议的通信方式,它允许两台或多台计算机...
windows 2008 R2解决socket连接不释放补丁包_time-wait过多注册表修改, Windows time_wait过多解决办法解决办法: 修改注册表中的tcpip的TIMEWAIT回收时间属性值,需要重启后生效 在HKEY_LOCAL_MACHINE\SYSTEM...
"fx5以太网socket连接 测试ok.zip"这个文件名暗示了一个使用FX5系列PLC(可编程逻辑控制器)进行以太网Socket通信的测试项目。FX5是三菱电机推出的一款高端PLC,具备强大的网络通讯功能,适用于自动化控制系统的集成...
Socket连接工具是一款强大的网络调试与检测软件,专为软件开发人员设计,旨在简化网络通信的测试和调试过程。它能够帮助开发者创建本地的Socket服务器(Server)和客户端(Client),支持两种主要的网络传输协议:...
易语言socket连接超时例程源码,socket连接超时例程,子程序1,socket,htons,inet_addr,Connect,closesocket,WSAStartup,setsockopt,ioctlsocket,select
Android Socket连接,包含心跳检测,断线重连,数据发送等等 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/78094909
一个java socket连接池的典型实例 SocketClient,客户端测试类 SocketAdapter继承Socket类,重新封装socket类 SocketConnectionPool,连接池管理类 StartupSocketServer,socket服务器端的主线程,负责监听端口,当有...