Socket 通信

1.UDP实现  (DatagramSocket)

【客户端】

//首先创建一个DatagramSocket对象

DatagramSocket socket = new DatagramSocket(4567);

//创建一个InetAddress

InetAddress serverAddress = InetAddress.getByName("192.168.1.104");

String str = "hello";

//这是要传输的数据 byte data [] = str.getBytes();

//把传输内容分解成字节

//创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、地址,以及端口号

DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,4567);

//调用socket对象的send方法,发送数据

socket.send(packet);

【服务器端】

//创建一个DatagramSocket对象,并指定监听的端口号

DatagramSocket socket = new DatagramSocket(4567);

byte data [] = new byte[1024];

//创建一个空的DatagramPacket对象

DatagramPacket packet = new DatagramPacket(data,data.length);

//使用receive方法接收客户端所发送的数据,

//如果客户端没有发送数据,该进程就停滞在这里

socket.receive(packet);

String result = new String(packet.getData(),packet.getOffset(),packet.getLength());

2.TCP通信

【客户端】

创建一Socket对象并指明服务器端的IP及端口号

Socket socket = new Socket("192.168.1.0",45678);

//向服务器发送消息

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

out.println(message);

//从服务器接收消息

BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String rString = is.readLine().toString();

【服务器端】

//创建一个ServerSocket对象,并让这个Socket在45678端口监听

serverSocket = new ServerSocket(45678);

//调用ServerSocket的accept()方法,接受客户端所发送的请求,

//如果客户端没有发送数据,那么该线程就停滞不继续

Socket socket = serverSocket.accept();

//从Socket当中得到InputStream对象

InputStream inputStream = socket.getInputStream();

byte buffer [] = new byte[1024*4];

int temp = 0;

//从InputStream当中读取客户端所发送的数据

while((temp = inputStream.read(buffer)) != -1) {

String str = new String(buffer,0,temp);

//接下来可以对从客户端接收到的消息做处理

}

【Socket获取客户端IP地址及端口号】

Socket类包含一些非常有用的属性,这些属性允许确定关于正在连接的客户端的信息。其中关键信息之一    是返回EndPoint对象的RemoteEndPoint属性。

EndPoint类本身是抽象的,要想收集有用的信息,需·要把    EndPoint强制类型转换为IPEndPoint对象。

IPEndPoint类包含远程客户端的IP地址和端口号。具体用法如下:

TcpListener tcpl=new TcpListener(port);

Socket s=tcpl.AcceptSocket();

label1.text=((IPEndPoint)s.RemoteEndPoint).Address.ToString();

label2.text=((IPEndPoint)s.RemoteEndPoint).Port.ToString();

android Socket 编程的更多相关文章

  1. Android Socket编程

    花了大概两天的时间,终于把Android的Socket编程给整明白了.抽空和大家分享一下: Socket Programming on Android Socket 编程基础知识: 主要分服务器端编程 ...

  2. Android Socket编程学习笔记

    http://blog.csdn.net/eyu8874521/article/details/8847173 度娘给出的描述:通常也称作"套接字",用于描述IP地址和端口,是一个 ...

  3. Android Socket编程基础

    前些天写了一个Android手机在局域网内利用Wifi进行文件传输的Demo,其中用到了Socket编程,故此总结(盗了网友的一些图和文字).好久好久没来博客园了~~ 1.什么是Socket? soc ...

  4. android socket编程用Bufferreader读取的一个失败教训

    由于我的手机需要用笔记本开的wifi,躺在床上玩手机时需要关电脑或者是要让电脑放歌的时候总是不想下床,于是我想能不能用一个APP,然后通过局域网实现在手机上对电脑进行操控呢?说干就干. 我在电脑上用的 ...

  5. Android网络编程系列 一 Socket抽象层

     在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽 ...

  6. Android 网络编程 Socket

    1.服务端开发 创建一个Java程序 public class MyServer { // 定义保存所有的Socket,与客户端建立连接得到一个Socket public static List< ...

  7. android开发系列之socket编程

    上周在项目遇到一个接口需求就是通讯系列必须是socket,所以在这篇博客里面我想谈谈自己在socket编程的时候遇到的一些问题. 其实在android里面实现一个socket通讯是非常简单的,我们只需 ...

  8. Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/04/2379628.html 一.概述 关于Socket编程的基本方法在基础篇里已经讲过,今天把 ...

  9. 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET

    基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...

随机推荐

  1. mysql中日志的配置与分析

    默认情况下,如果日志没有配置,则只记录错误日志,记录到syslog,配置文件 /etc/mysql/conf.d/mysqld_safe_syslog.cnf (ubuntu下) [mysqld_sa ...

  2. Tensorflow CNN入门

    一.概论 以图像识别来举例,比如我们让计算机如何识别一张猫的图片识别出猫呢? 老式的计算机视觉是如何做的呢? 比如OpenCV: 首先理解很多算法,比如如何检测线条(Edge Detection) 如 ...

  3. 【Oracle】Oracle约束的总结

    你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了.ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本 ...

  4. JSP相关知识

    1.JSP的3个编译指令 pag include taglib 2.JSP的7个动作指令 forward include useBean setProperty getProperty plugin ...

  5. Android Developers:保存文件

    Android使用一个和其它平台基于硬盘文件系统相似的文件系统.这个课程描述了如何和在Android文件系统使用File APIs读和写文件. 一个File对象适用于读或者写从头到尾没用中断的大型数据 ...

  6. 在java项目中使用 Lombok 及可能问题

    一.Maven项目使用步骤一般包含两步,1)引入依赖 2)特定的 IDE 引入对应的插件 1)在POM中引入依赖 <!-- https://mvnrepository.com/artifact/ ...

  7. 面试题一:linux面试题

    2.4 写出一种排序算法(原理),并说出优化它的方法. 2.5 请简单阐述您最得意的开发之作 2.6 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题 a. 确认服务器是否能支撑当前访问 ...

  8. 有关 WCF 的一些错误处理

    错误消息: System.ServiceModel.EndpointNotFoundException: 无法调度消息,因为终结点地址"net.tcp://localhost/xxx.svc ...

  9. java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException 的解决办法之一

    在查看别人的代码的时候,遇到了把工程导入到 Android Studio ,报:ExecutionException: com.android.ide.common.process.ProcessEx ...

  10. Universal USB Installer集开源软件之佳作

    有机会下载一份uui的源代码,翻看了一下,呵呵,有意思,几乎是一个开源软件的大杂烩,忽然,恍然大悟,原来,作者才是开源软件精神的代言人,不重复制造轮子的践行者啊. uui网址:https://www. ...