简单的使用Socket实现数据通信
来源:互联网 发布:奥拉朱旺数据 编辑:程序博客网 时间:2024/04/29 20:05
在传输数据的过程中,需要通过一个双向的通信链接实现数据的交互。在这个传输过程中,通常将这个双向链路的一段称为Socket,一个Socket通常由一个IP地址和一个端口号来确定。
下面使用Socket来实现一个简单的数据通信:
- 服务端
package server;import java.io.IOException;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;/*Eclipse*/public class serverSocekt { public static void main(String[] args) throws IOException{ ServerSocket ss = new ServerSocket(30000); while(true){ Socket s = ss.accept(); PrintStream ps = new PrintStream(s.getOutputStream()); ps.println("啊啊啊啊啊啊!"); ps.close(); s.close(); } }}
- 客户端
package com.mystudy.kibi.sockettest;import android.os.StrictMode;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.Socket;//Android Studiopublic class MainActivity extends AppCompatActivity {
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new Thread(){ @Override public void run() { try { connect(); } catch (IOException e) { Log.e("====>","失败"); e.printStackTrace(); } } }.start(); } });}private void connect() throws IOException { Socket socket = new Socket("192.168.0.101",30000); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = bufferedReader.readLine(); Log.e("====>",line); bufferedReader.close(); socket.close();}
}
此外:网络请求需要添加权限:
<uses-permission android:name="android.permission.INTERNET"/>
注意:google不再允许网络请求(HTTP、Socket)等相关操作直接在Main Thread类中,所以要放在子线程里。
直接在main Thread 进行网络操作的方法,网上给出的,我测试下来可行,在发起Http请求的Activity里面的onCreate函数里面添加如下代码:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites().detectNetwork() .penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects().detectLeakedClosableObjects() .penaltyLog().penaltyDeath().build());
0 0
- 简单的使用Socket实现数据通信
- Android中使用Socket来实现服务器端和客户端,进行数据通信(使用原生Socket)
- Socket数据通信
- Socket 数据通信
- Socket数据通信
- unity3D中使用Socket进行数据通信
- 使用dgram模块实现基于UDP的数据通信
- 使用net模块实现基于TCP的数据通信
- Socket的简单实现
- 使用Socket实现简单聊天
- Socket的简单使用
- 使用Intent实现界面之间双向数据通信
- 使用共享内存和信号量实现数据通信
- Android仿广播通信实现简单的应用间service与activity之间的数据通信
- socket通讯和.net remoting实现网络数据通信哪个好些
- 使用socket实现简单的统计站点人数
- 简单的Client / Server 使用 linux 伯克利 socket实现 编辑
- 使用Express + Socket.io + MongoDB实现简单的聊天
- 程序员面前的十座大山
- QT笔记:数据库总结(二)之SQL模型类-QSqlQueryModel模型
- 从activity2传数据回acvitity1
- 如何在vim保存时获得sudo权限
- 如何让Linux进程在后台运行
- 简单的使用Socket实现数据通信
- wildfly standalone 模式配置成linux 服务
- C#中的弱引用(WeakReference
- QT笔记:数据库总结(三)之SQL模型类-QSqlTableModel模型
- 字符串大小写移动位置
- 【个人作品】在SIP客户端实现服务器端的IVR(互动式语音应答,即语音导航,自动语音话务员)功能
- 基于系统的封装SegmentView类
- $.ajax()方法详解
- Android学习之SD卡写入bitmap位图