当前位置: 首页 > news >正文

在线听音乐网站建设求个网站你会感谢我的

在线听音乐网站建设,求个网站你会感谢我的,企业网站托管服务常用指南,厦门网站建设有哪些公司Android socket通信Socket协议android socket 代码清单文件开启服务服务端#xff1a;TCPServerService客户端#xff1a;TCPClientServicelogSocket Socket 作为一种通用的技术规范#xff0c;首次是由 Berkeley 大学在 1983 为 4.2BSD Unix 提供的#xff0c;后来逐渐演化… Android socket通信Socket协议android socket 代码清单文件开启服务服务端TCPServerService客户端TCPClientServicelogSocket Socket 作为一种通用的技术规范首次是由 Berkeley 大学在 1983 为 4.2BSD Unix 提供的后来逐渐演化为 POSIX 标准。Socket API 是由操作系统提供的一个编程接口让应用程序可以控制使用 socket 技术。 Socket API 不属于 TCP/IP协议簇只是操作系统提供的一个是一个对 TCP / IP协议进行封装 的编程调用接口工作在应用层与传输层之间 一个 Socket 包含两个必要组成部分 1地址IP 和端口号组成一队套接字 2协议Socket 所用的是传输层协议目前有 TCP、UDP、raw IP 协议 根据传输方式不同即使用的协议不同可分为三种 1.Stream Sockets流套接字 基于 TCP协议采用 流的方式 提供可靠的字节流服务。TCP 协议有以下特点 ·面向连接指的是要使用TCP传输数据必须先建立TCP连接传输完成后释放连接就像打电话一样必须先拨号建立一条连接打完后挂机释放连接。 ·全双工通信即一旦建立了TCP连接通信双方可以在任何时候都能发送数据。 ·可靠的指的是通过TCP连接传送的数据无差错不丢失不重复并且按序到达。 ·面向字节流流指的是流入到进程或从进程流出的字符序列。简单来说虽然有时候要传输的数据流太大TCP报文长度有限制不能一次传输完要把它分为好几个数据块但是由于可靠性保证接收方可以按顺序接收数据块然后重新组成分块之前的数据流所以TCP看起来就像直接互相传输字节流一样面向字节流。 2.Datagram Sockets数据报套接字 基于 UDP协议采用 数据报文 提供数据打包发送的服务。UDP 协议有以下特点 ·无连接的和TCP要建立连接不同UDP传输数据不需要建立连接就像写信在信封写上收信人名称、地址就可以交给邮局发送了至于能不能送到就要看邮局的送信能力和送信过程的困难程度了。 ·不可靠的因为UDP发出去的数据包发出去就不管了不管它会不会到达所以很可能会出现丢包现象使传输的数据出错。 ·面向报文数据报文就相当于一个数据包应用层交给UDP多大的数据包UDP就照样发送不会像TCP那样拆分。 ·没有拥塞控制拥塞是指到达通信子网中某一部分的分组数量过多使得该部分网络来不及处理以致引起这部分乃至整个网络性能下降的现象严重时甚至会导致网络通信业务陷入停顿即出现死锁现象就像交通堵塞一样。TCP建立连接后如果发送的数据因为信道质量的原因不能到达目的地它会不断重发有可能导致越来越塞所以需要一个复杂的原理来控制拥塞。而UDP就没有这个烦恼发出去就不管了。 3.Row Sockets 通常用在路由器或其他网络设备中这种 socket 不经过TCP/IP协议簇中的传输层transport layer直接由网络层Internet layer通向应用层Application layer所以这时的数据包就不会包含 tcp 或 udp 头信息。 android socket 代码 清单文件 得添加权限 uses-permission android:name“android.permission.INTERNET” / ?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.lxh.bijiandroid:installLocationinternalOnlyuses-permission android:nameandroid.permission.INTERNET /applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/Theme.Shuijiactivityandroid:name.MainActivityandroid:enabledtrueandroid:exportedtrueintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activityserviceandroid:name.TCPServerServiceandroid:enabledtrueandroid:exportedtrueintent-filteraction android:namecom.newland.management.TCPServerService.and /category android:nameandroid.intent.category.DEFAULT //intent-filter/serviceserviceandroid:name.TCPClientServiceandroid:enabledtrueandroid:exportedtrueintent-filteraction android:namecom.newland.management.TCPClientService.and /category android:nameandroid.intent.category.DEFAULT //intent-filter/service/application /manifest开启服务 Intent intentx new Intent(com.newland.management.TCPServerService.and); intentx.setPackage(com.lxh.biji); context.startService(intentx); Intent intentx_ new Intent(com.newland.management.TCPClientService.and); intentx_.setPackage(com.lxh.biji); context.startService(intentx_);服务端TCPServerService package com.lxh.biji; import android.app.IntentService; import android.content.Intent; import android.os.SystemClock; import android.text.TextUtils; import android.util.Log; import androidx.annotation.Nullable; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /*** create by lxh on 2023/2/20 Time16:33* tip:socket服务端 端口号55019用来发送值*/ public class TCPServerService extends IntentService {private static final String TAG TCPServerService;public TCPServerService() {super(TCP);}Overridepublic void onCreate() {super.onCreate();Log.d(TAG, lxh TAG onCreate: );}Overridepublic void onDestroy() {super.onDestroy();isover true;Log.d(TAG, lxh TAG onDestroy: );}private boolean isover false;private String sendMag;Overrideprotected void onHandleIntent(Nullable Intent intent) {try {Log.i(TAG,lxh onHandleIntent);ServerSocket serverSocket new ServerSocket(55019);//监听本地端口号Socket socket serverSocket.accept();InputStream inputStream socket.getInputStream();//获取输入流接受用户发来的消息BufferedReader reader new BufferedReader(new InputStreamReader(inputStream));OutputStream outputStream socket.getOutputStream();//获取输出流向客户端回复消息PrintWriter writer new PrintWriter(new OutputStreamWriter(outputStream));while (!isover) {//通过循环不断读取客户端发来的消息,并回复//Log.i(TAG,lxh on while);String readLine reader.readLine();if (!TextUtils.isEmpty(readLine)) {String readMag readLine.toString();Log.i(TAG,lxh 客户端发送的消息readMag);if(readMag.equals(Client_send)){String need_StringServer_back;sendMag need_String;}else if (readMag.equals(get)){ }//SystemClock.sleep(500);//延迟发送writer.println(sendMag\r);writer.flush();//刷新流}else { }}inputStream.close();//关闭流reader.close();outputStream.close();writer.close();socket.close();//需关闭否则再次连接时会报端口号已被使用serverSocket.close();} catch (IOException e) {e.printStackTrace();}} }客户端TCPClientService package com.lxh.biji; import android.annotation.SuppressLint; import android.app.IntentService; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.text.TextUtils; import android.util.Log; import androidx.annotation.Nullable; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; /*** create by lxh on 2023/2/20 Time20:02* tip:socket客户端 端口号55019*/ public class TCPClientService extends IntentService {private static final String TAG TCPClientService;public TCPClientService() {super(TCP);}Overridepublic void onCreate() {super.onCreate();Log.d(TAG, lxh TAG onCreate: );}Overridepublic void onDestroy() {super.onDestroy(); // isover_client true; // //关闭输入流和连接 // if (mSocket ! null) { // try { // mSocket.shutdownInput(); // mSocket.close(); // } catch (IOException e) { // e.printStackTrace(); // } // }Log.d(TAG, lxh TAG onDestroy: );}private boolean isover_client false;private String sendMag_client;private static final int CONNECT_SERVER_SUCCESS 0;private static final int MESSAGE_RECEIVE_SUCCESS 1;private static final int MESSAGE_SEND_SUCCESS 2;Overrideprotected void onHandleIntent(Nullable Intent intent) {new Thread(new Runnable() {Overridepublic void run() {connectTCPServer();//连接服务端实现通信交互//IO操作必须放在子线程执行}}).start();}Handler handlernew Handler();int handler_id0;//handler.postDelayed(runnable, 2000);//handler.removeCallbacks(runnable);Runnable runnablenew Runnable() {Overridepublic void run() {run_send();handler_id;handler.postDelayed(this, 2000);if (handler_id3){handler.removeCallbacks(runnable);//关闭输入流和连接if (mSocket ! null) {try {mSocket.shutdownInput();mSocket.close();} catch (IOException e) {e.printStackTrace();}}}}};private void run_send(){new Thread(new Runnable() {Overridepublic void run() {String msg Client_send;if (mPrintWriter ! null !TextUtils.isEmpty(msg)) {mPrintWriter.println(msg \n);//mPrintWriter.flush();//此处可以不用刷新流的方法因为在创建mPrintWriter对象时在其构造方法中设置了自动刷新缓存mHandler.obtainMessage(MESSAGE_SEND_SUCCESS, msg).sendToTarget();}}}).start();}private Socket mSocket null;private void connectTCPServer() {while (mSocket null) {//通过循环来判断Socket是否有被创建若没有则会每隔1s尝试创建目的是保证客户端与服务端能够连接try {mSocket new Socket(localhost, 55019);//创建Socket对象指定IP地址和端口号mPrintWriter new PrintWriter(new OutputStreamWriter(mSocket.getOutputStream()), true);if (mSocket.isConnected()) //判断是否连接成功mHandler.sendEmptyMessage(CONNECT_SERVER_SUCCESS);} catch (IOException e) {e.printStackTrace();SystemClock.sleep(1000);//设计休眠机制每次重试的间隔时间为1s}}try {BufferedReader reader new BufferedReader(new InputStreamReader(mSocket.getInputStream()));while (!isover_client) {//通过循环来不断的接受服务端发来的消息String msg reader.readLine();if (!TextUtils.isEmpty(msg)) {mHandler.obtainMessage(MESSAGE_RECEIVE_SUCCESS, msg).sendToTarget();}}mPrintWriter.close();//关闭流reader.close();} catch (IOException e) {e.printStackTrace();}}SuppressLint(all)private Handler mHandler new Handler(new Handler.Callback() {Overridepublic boolean handleMessage(Message msg) {switch (msg.what) {case CONNECT_SERVER_SUCCESS:Log.i(TAG,lxh 与服务端连接成功);//run_send();handler.postDelayed(runnable, 2000);break;case MESSAGE_RECEIVE_SUCCESS:Log.i(TAG,lxh 服务端发来的消息msg.obj.toString());break;case MESSAGE_SEND_SUCCESS://Log.i(TAG,lxh 客户端发送的消息msg.obj.toString());break;}return false;}});private PrintWriter mPrintWriter; } log /com.lxh.biji D/TCPServerService: lxh TCPServerService onCreate: /com.lxh.biji I/TCPServerService: lxh onHandleIntent /com.lxh.biji D/TCPClientService: lxh TCPClientService onCreate: /com.lxh.biji D/TCPClientService: lxh TCPClientService onDestroy: /com.lxh.biji I/TCPClientService: lxh 与服务端连接成功 /com.lxh.biji I/TCPServerService: lxh 客户端发送的消息Client_send /com.lxh.biji I/TCPClientService: lxh 服务端发来的消息Server_back /com.lxh.biji I/TCPServerService: lxh 客户端发送的消息Client_send /com.lxh.biji I/TCPClientService: lxh 服务端发来的消息Server_back /com.lxh.biji I/TCPServerService: lxh 客户端发送的消息Client_send /com.lxh.biji I/TCPClientService: lxh 服务端发来的消息Server_back感谢互联网 引用内容来自Android Socket 通信 服务端部分代码参考Android进程间通信 - Socket使用TCP、UDP 适合阅读文章分享 Android 基于TCP的 Socket 编程实现结合 okio Android实现socket网络通信 基于android的Socket通信
http://www.dnsts.com.cn/news/254735.html

相关文章:

  • 优质的响应式网站建设网站建设糹金手指花总
  • 有域名了网站怎么做app软件系统定制开发
  • 冲压加工瑞安有做网站吗织梦网站2个模型
  • 网站建设公司管理流程图个人网站内容如何填写
  • 会ps的如何做网站wordpress文章中的相关文章代码在
  • 网站推广的方法有哪些?西部数码网站管理助手错误
  • 网站培训班商品网站开发
  • 网站建设的功能需求文档东莞网站建设提供商
  • 如何快速模仿一个网站北极鱼wordpress
  • 阿里巴巴网站推广方法上海网站高端定制
  • 手机制作网页用什么软件湘潭做网站优化
  • 长沙微信网站百度文库怎么做网站排名
  • 建立公司网站的重点怎样让自己做的网站被百度收录
  • 深圳网站制作专业公司新闻热点事件摘抄及评论
  • 吴彦祖做的艺术家网站app开发自学
  • 网站信息备案查询shopify是什么平台
  • 网站认证怎么做南京市工程建设交易中心网站
  • 网站切换网站内容建设怎么写
  • php电子商务网站建设自动生成网站地图怎么做
  • 网站 制作水印做seo推广一年大概的费用
  • 第三次网站建设的通报买网站做网站
  • 顺德网站制作案例信息公网动态ip如何做网站
  • 网站建设福州百度下载2022新版安装
  • 海飞丝网站建设中面临的技术问题_并提出可行的技术解决方案app下载app开发公司
  • 眉山网站建设兼职2022年编程语言官方排行榜
  • 大学网站html模板建站公司成功案例
  • 南京建站服务成都商城网站制作
  • 关于电子商务网站建设的参考文献常德市做网站联系电话
  • 网站开发技术课程设计说明书国内跨境电商公司排行榜
  • 高校两学一做网站建设怎么做网站h汉狮