android Socket 编程
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实现TCP断点上传,后台C#服务实现接收
- iOS 私有变量 私有方法
- ASP.NET Core--条件处理程序中的依赖注入
- Oracle中的自动增长字段
- DDD领域驱动设计之运用层代码
- PL/SQL之--变量
- 大型网站技术架构介绍--squid
- Java1.8.0_05 环境配置
- ios 入门之Hello World
- 【iOS 7】使用UIScreenEdgePanGestureRecognizer实现swipe to pop效果
- 百度地图API地址转换成经纬度
- 【转】nand flash坏块管理OOB,BBT,ECC
- JavaScript之共享onload
- 都是Javascript的作用域惹得祸
- [转载] Solr使用入门指南
- log4j日志记录级别是如何工作?
- Centos7 安装mysql-8.0.13(rpm)
- 11.9luffycity(4)
- Java面试集合(三)
- sass和scss的区别
热门文章
- ios 中UIViewController的分类
- iOS No matching provisioning profile found for ";Applicartion/xxx.app";的解决方案
- Swift3.0 - 实现剪切板代码拷贝及跨应用粘贴
- excel中的数据粘贴不全到plsql中,excel 粘贴后空白,Excel复制粘贴内容不全
- Linux 操作MySQL常用命令行(转)
- 树莓派进阶之路 (006) - 树莓派安装wiringPi
- 安卓高手之路之ClassLoader(三)
- XmlSerializer 对象序列化成XML 自定义编码格式(gb2312)
- KnockoutJs学习笔记
- Objective-C 资源收藏