`

Mars视频笔记——Socket编程

阅读更多

Socket编程

www.mars-droid.com

1 什么是Socket

Android使用的是Java的Socket模型

Socket原意插座 通常称作“套接字” 用于描述IP地址和端口,是一个通信链的句柄

应用程序通过“套接字”向网络发出请求火应答网络请求

 

2 Socket基本通信模型

客户端(Socket) 输出流 OutputStream ---> 服务端(ServerSocket) 输出流 InputStream

服务端(ServerSocket) 输出流 OutputStream ---> 客户端(Socket) 输入流 InputStream

 

3 使用基于TCP协议的Socket

 

*ServerThread extends Thread的run方法 服务器端代码

声明一个ServerSocket对象 监听指定端口

ServerSocket serverSocket=new ServerSocket(端口);

调用serverSocket的accept方法,接受客户端所发送的请求

Socket socket=serverSocket.accept();//返回一个socket 代表一个连接

从socket中得到InputStream对象

InputStream inputStream=socket.getInputStream();

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

int temp=0;

从InputStream读取数据

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

Syestem.out.println(new String(buffer,0,temp));

}

*客户端代码

创建一个Socket对象,指定服务器端IP地址和端口

Socket socket=new Socket("ip地址",端口);

使用InputStream读取一个文件

InputStream inputStream=new FileInputStream("文件路径");

从Socket中得到一个OutputStream

OutputStream outputStream=socket.getOutputStream();

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

int temp=0;

将InputStream中读出,并写入到OutputStream中

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

outputStream.write(buffer,0,temp);

}

outputStream.flush();

 

4 使用基于UDP协议的Socket

 

*服务器端代码

创建一个DatagramSocket对象,指定端口号

DatagramSocket socket=new DatagramSocket(端口);

byte data[]=new byte[1024];

创建一个空的DatagramPacket对象 用于接受数据

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

使用receive方法接受客户端发送的数据(有些类似于accept 也是阻塞的)

socket.receive(packet);

System.out.println(new String(packet.getData(),packet.getOffset(),packet.getLength()));

 

*客户端代码

创建一个DatagramSocket对象

DatagramSocket socket=new DatagramSocket(端口);

创建一个InetAddress 代表网络中的一个地址

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

String str="hello";

byte data[]=str.getBytes();

创建DatagramPacket对象 指定发送的地址和端口号

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

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

socket.send(packet);

分享到:
评论

相关推荐

    android mars视频代码 socket 源码 套接字

    www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码 socket 套接字(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)

    Mars(战神)——资产发现.zip

    Mars(战神)——资产发现、子域名枚举、C段扫描、资产变更监测、端口变更监测、域名解析变更监测、Awvs扫描、POC检测、web指纹探测、端口指纹探测、CDN探测、操作系统指纹探测、泛解析探测、WAF探测、敏感信息检测...

    contentProvider mars的视频笔记

    这里是个人在看mars的contentprovider中的做记录的一些笔记,因为这章没有源码,所以做了点笔记下来仔细看看,不需要的同志不需要下哦

    mars视频教程源码全集下载(35集全)

    mars视频教程是初学android者首选的经典网上教程,mars老师语言幽默风趣、逻辑条理清晰,可以让初学者对android有个很好的入门学习,该资源是网上mars视频教程的全部源代码,初学者可以结合网上教程和源代码进行学习...

    mars老师android视频第一季到第五季源码及视频合集

    《mars老师android视频第一季到第五季源码及视频合集》是一份全面且深入的Android开发学习资源,由知名讲师mars老师倾力打造。这个合集包含了从基础到高级的Android开发教学视频以及配套的源码,是Android开发者提升...

    mars老师android视频学习笔记

    mars老师android视频学习笔记,mars老师讲解细致,这套笔记记得非常全面

    Mars老师视频源代码

    《Mars老师视频源代码详解——深入Android编程实践》 Mars老师的视频源代码是一份宝贵的教育资源,专注于Android平台的开发。这份源代码是Mars老师在教学过程中使用的实例,旨在帮助学习者深入理解Android应用的...

    mars老师视频源码

    【标题】"mars老师视频源码"所涉及的知识点主要围绕着编程教学、软件开发以及可能涵盖的编程语言和技术栈。Mars老师作为一位知名的IT教育专家,他的视频源码通常会包含一系列与编程相关的实践项目,旨在帮助学生或...

    mars视频教程源码全集

    【火星(Mars)视频教程源码全集】是一份专为学习者设计的资源,旨在帮助他们深入了解和掌握Android应用开发的相关技能。这个压缩包包含了一系列与Android应用开发相关的项目源码,覆盖了多个关键知识点,对于想要...

    Android开发mars视频教学第二季+源码和ppt.rar

    在本资源包“Android开发mars视频教学第二季+源码和ppt.rar”中,您将获得深入学习Android应用开发的宝贵材料,特别是针对Mars框架的使用。这个压缩包包含了视频教程、源代码以及相关的PPT,旨在帮助开发者提升...

    Mars Android视频教程的笔记

    本笔记集合了"Mars Android视频教程"的主要知识点,旨在帮助学习者回顾和巩固课程中的核心概念。以下是根据文件名整理出的各章节内容详解: 1. **Animations.doc** - 动画是Android应用中提升用户体验的关键元素。...

    mars android视频源码

    【标题】"mars android视频源码"涉及到的知识点主要集中在Android开发领域,特别是与Mars相关的部分,这可能是一个开源项目或教学资源。Mars通常指的是火星,但在编程语境中,它可能是一个专用于Android开发的框架...

    mars老师视频源码下载(33集全)

    【标题】"mars老师视频源码下载(33集全)"所涵盖的知识点主要集中在Android开发领域,由知名讲师mars提供。这个资源是针对初学者的,旨在帮助他们理解和学习Android应用程序开发的基础和进阶技巧。源码是学习过程中...

    mars android视频教程全套下载链接

    根据提供的文件信息,这里主要涉及的是关于“Mars Android视频教程”的相关内容。下面将围绕这一主题,详细展开介绍与Android开发相关的知识点。 ### Mars Android视频教程概览 #### 一、教程简介 “Mars Android...

    mars_car_problem.rar_Mars_mars car_火星车 编程题

    本次我们关注的是一个名为“火星车”(Mars Car)的问题,这是一道经典的编程题,旨在考察开发者对于逻辑控制、坐标系统理解以及问题解决能力。该题目源自“mars_car_problem.rar”压缩包文件,内部包含了一个用Ruby...

    mars 视频源码

    通过研究和学习Mars老师的视频源代码,开发者可以深入了解视频处理的底层原理,提升自己的编程技能,并可能在此基础上构建出更多功能丰富的视频应用。同时,开源项目也鼓励社区参与,共同改进和完善代码库。

    mars视频代码大全

    《火星(mars)视频代码大全》是一份珍贵的编程学习资源,主要涵盖了火星视频第一季和第二季中的各种代码示例。这套代码集合是作者精心搜集和整理的成果,旨在帮助程序员快速提升代码编写能力,深入理解编程概念和技术...

    Mars视频行人重识别数据集

    整个Mars数据的大小大概有6.3G,有两个名称为bbox_train和 bbox_test的文件夹。 同时你还应该下载一个关于数据集信息的info文件夹。info文件夹不包括在原始数据集中,下载地址为...

Global site tag (gtag.js) - Google Analytics