- 浏览: 67699 次
- 性别:
- 来自: Mercury
最新评论
一、什么是Socket
Socket是基于不同的协议的网络通信的接口。Socket的英文原意是“插座”,所谓socket通常也被称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过Socket向网络发出请求或者应答网络请求。
二、Socket基本通信模型
三、使用基于TCP协议的Socket
例子程序,此例子需要两个项目,一个是Android项目作为服务器端,一个可以是Java项目作为客户端。运行时需要先在真机上面运行服务端,开启服务,然后在eclipse中运行客户端。
SocketActivity.java
package com.android.activity; import java.io.InputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.ServerSocket; import java.net.Socket; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class SocketActivity extends Activity { private Button startTCPButton = null; private Button startUDPButton = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); startTCPButton = (Button)findViewById(R.id.startTCPButton); startTCPButton.setOnClickListener(new StartTCPButtonListener()); startUDPButton = (Button)findViewById(R.id.startUDPButton); startUDPButton.setOnClickListener(new StartUDPButtonListener()); } class StartTCPButtonListener implements OnClickListener{ public void onClick(View v) { Thread thread = new Thread(new TCPServerThread()); thread.start(); } } class StartUDPButtonListener implements OnClickListener{ public void onClick(View v) { Thread thread = new Thread(new UDPServerThread()); thread.start(); } } class TCPServerThread implements Runnable{ //TCP的服务器端 public void run() { //声明一个ServerSocket对象 ServerSocket serverSocket = null; try{ //创建一个ServerScoket对象,并让其监听点卡9999 serverSocket = new ServerSocket(9999); //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){ System.out.println(new String(buffer,0,temp)); } }catch(Exception e){ e.printStackTrace(); }finally{ try{ serverSocket.close(); }catch(Exception e){ e.printStackTrace(); } } } } class UDPServerThread implements Runnable{ //UDP服务器端口 public void run(){ try{ //创建一个DatagramSocket对象,并制定监听的端口 DatagramSocket socket = new DatagramSocket(9998); byte data[] = new byte[1024]; //使用UDP所发送的数据包,创建一个空的DatagramPacket对象, //用来接收从客户端发送过来的数据 DatagramPacket packet = new DatagramPacket(data,data.length); //使用receive方法接收数据 socket.receive(packet); //data长度定位1024,如果传输的数据不足1024就会在后面出现乱码 String result = new String(packet.getData(),packet.getOffset(),packet.getLength()); System.out.println("resutl --> " + result); }catch(Exception e){ e.printStackTrace(); } } } }
TCPClient.java
package com.android.client; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class TCPClient { public static void main(String [] args){ try{ //创建一个Socket对象,指定服务器端口的IP和端口号 Socket socket = new Socket("122.158.93.206",9999); InputStream inputStream = new FileInputStream("./txt/panghuang.txt"); OutputStream outputStream = socket.getOutputStream(); byte buffer[] = new byte[1024*4]; int temp = 0; while((temp = inputStream.read(buffer)) != -1){ outputStream.write(buffer,0,temp); } }catch(Exception e){ e.printStackTrace(); } } }
四、使用基于UDP协议的Socket
UDPClient.java
package com.android.client; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPClient { public static void main(String[] args) { try{ //创建一个DatagramSocket对象 DatagramSocket socket = new DatagramSocket(9998); //创建一个InetAddree InetAddress serverAddress = InetAddress.getByName("122.158.93.206"); String s = "Hello Android"; byte data[] = s.getBytes(); DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,9998); socket.send(packet); }catch(Exception e){ e.printStackTrace(); } } }
发表评论
文章已被作者锁定,不允许评论。
-
Android40_Dialog
2011-11-14 00:11 2998Dialog是Android常用的对话框控件。AlertDia ... -
Android39_Clock和TimePicker
2011-11-14 00:08 2361一、AnalogClock和DigitalClock ... -
Android38_ImageView和Gallery
2011-11-14 00:07 3616一、ImageView使用方法 ImageVi ... -
Android37_JSON数据解析
2011-11-08 00:14 2350一、JSON介绍 JSON(JavaSc ... -
Android36_Animations使用(四)
2011-11-08 00:14 3418一、LayoutAnimationsContrlller ... -
Android35_Animations使用(三)
2011-11-08 00:13 2652一、AnimationSet的具体使用方法 ... -
Android34_Animations使用(二)
2011-11-08 00:12 1961在代码中使用Animations可以很方便的调试、运行 ... -
Android33_Animations使用(一)
2011-11-08 00:12 2287一、Animations介绍 Anima ... -
Android31_AppWidget使用(二)
2011-11-05 00:09 2511一、PendingIntent介绍 PendingIn ... -
Android30_AppWidget使用(一)
2011-11-05 00:08 2262一、App Widget定义 App ... -
Android32_Notification用法
2011-11-05 00:09 1889Android系统的状态栏(Status Bar)中有一 ... -
Android29_SeekBar和RatingBar
2011-11-02 23:21 2120一、使用SeekBar步骤: SeekB ... -
Android28_ExpandableListActivity
2011-11-02 23:21 1489ExpandableListActivity就是可扩展的 ... -
Android27_AutoCompleteTextView
2011-11-02 23:21 1094一、创建AutoCompleteTextView ... -
Android26_DatePicker
2011-11-02 23:20 1783一、DatePicker和DatePickerDialo ... -
Android25_Spinner使用方法
2011-11-02 23:20 2818一、创建Spinner的步骤 1.在布局 ... -
Android24_Service初步
2011-10-18 22:27 1009一、Service概念 ... -
Android22_WIFI网络操作
2011-10-18 22:12 1696一、什么是WIFI WIFI就是一种无线 ... -
Android21_广播机制(二)
2011-10-18 22:00 1007一、注册BroadcastReceiver的方法 ... -
Android20_广播机制(一)
2011-10-18 21:48 1077一、Android广播机制介绍 Android:操作系统 ...
相关推荐
白色大气风格的旅游酒店企业网站模板.zip
python实现用户注册
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
内容概要:文档名为《平方表,派表集合.docx》,主要内容是1至1000的平方值以及1至1000与π的乘积结果。每个数字从1开始,逐步增加至1000,对应地计算了平方值和乘以π后的值。所有计算均通过Python脚本完成,并在文档中列出了详细的计算结果。 适合人群:需要进行数学计算或程序验证的学生、教师和研究人员。 使用场景及目标:用于快速查找特定数字的平方值或其与π的乘积,适用于教学、科研及程序测试等场景。 阅读建议:可以直接查阅所需的具体数值,无需从头到尾逐行阅读。建议在使用时配合相应的计算工具,以验证和拓展数据的应用范围。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
白色大气风格的健身私人教练模板下载.zip
白色简洁风的商务网站模板下载.zip
白色大气风格的前端设计案例展示模板.zip
内容概要:本文介绍了两个有趣的圣诞树项目方向:一是使用Arduino或Raspberry Pi开发可编程的圣诞树灯光控制系统;二是基于MATLAB开发一个圣诞树模拟器。前者通过硬件连接、编写Arduino/Raspberry Pi程序、MATLAB控制程序来实现LED灯带的闪烁;后者则通过创建圣诞树图形、添加动画效果、用户交互功能来实现虚拟的圣诞树效果。 适合人群:具备基本电子工程和编程基础的爱好者和学生。 使用场景及目标:①通过硬件和MATLAB的结合,实现实际的圣诞树灯光控制系统;②通过MATLAB模拟器,实现一个有趣的圣诞树动画展示。 阅读建议:读者可以根据自己的兴趣选择合适的项目方向,并按照步骤进行动手实践,加深对硬件编程和MATLAB编程的理解。
白色扁平风格的温室大棚公司企业网站源码下载.zip
Navicat.zip
内容概要:本文详细介绍了主成分分析(PCA)技术的原理及其在Scikit-learn库中的Python实现。首先讲解了PCA的基本概念和作用,接着通过具体示例展示了如何使用Scikit-learn进行PCA降维。内容涵盖了数据准备、模型训练、数据降维、逆转换数据等步骤,并通过可视化和实际应用案例展示了PCA的效果。最后讨论了PCA的局限性和参数调整方法。 适合人群:数据科学家、机器学习工程师、数据分析从业者及科研人员。 使用场景及目标:适用于高维数据处理,特别是在需要降维以简化数据结构、提高模型性能的场景中。具体目标包括减少计算复杂度、提高数据可视化效果和改进模型训练速度。 其他说明:本文不仅提供了详细的代码示例,还讨论了PCA在手写数字识别和机器学习模型中的应用。通过比较原始数据和降维后数据的模型性能,读者可以更好地理解PCA的影响。
VOC格式的数据集转COCO格式数据集 VOC格式的数据集转YOLO格式数据集。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
数字信号处理课程设计.doc
白色扁平化风格的灯饰灯具销售企业网站模板.zip
华豫佰佳组合促销视图.sql
白色大气风格的商务团队公司模板下载.zip
白色大气风格的VPS销售网站模板.zip