基于TCP/IP协议的Java服务端与Android客户端的Socket通信
2019-07-20 21:20
169 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/CWQLTYH/article/details/96628875
二、Java服务端 三、Android客户端 四、运行基于TCP/IP协议的Java服务端与Android客户端的流程图
基于TCP/IP协议的Java服务端与Android客户端的Socket通信
- 一、前言
- 1、Java服务端程序代码的项目名为TcpSocketServerForJava,包名为com.example.tcpsocketserver,类名为TcpSocketServer。
- 2、Android客户端程序代码项目名为TcpSocketClientForAndroid,包名为com.example.tcpsocketclientforandroid,类名为MainActivity。
一、前言
1、Java服务端程序代码的项目名为TcpSocketServerForJava,包名为com.example.tcpsocketserver,类名为TcpSocketServer。
2、Android客户端程序代码项目名为TcpSocketClientForAndroid,包名为com.example.tcpsocketclientforandroid,类名为MainActivity。
二、Java服务端
Java服务端程序代码
Java服务端程序代码:TcpSocketServer.java package com.example.tcpsocketserver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; public class TcpSocketServer { public static void main(String[] args)throws IOException { // TODO Auto-generated method stub //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket = new ServerSocket(12345); InetAddress address = InetAddress.getLocalHost(); String ip = address.getHostAddress(); Socket socket = null; //2.调用accept()等待客户端连接 System.out.println("~~~服务端已就绪,等待客户端接入~ 3ff7 ,服务端ip地址: " + ip); socket = serverSocket.accept(); //3.连接后获取输入流,读取客户端信息 InputStream is=null; InputStreamReader isr=null; BufferedReader br=null; OutputStream os=null; PrintWriter pw=null; is = socket.getInputStream(); //获取输入流 isr = new InputStreamReader(is,"UTF-8"); br = new BufferedReader(isr); String info = null; while((info=br.readLine())!=null) { //循环读取客户端的信息 System.out.println("客户端发送过来的信息" + info); } socket.shutdownInput();//关闭输入流 socket.close(); serverSocket.close(); } }
三、Android客户端
(一)、Android客户端主程序的程序代码
Android客户端主程序的程序代码:MainActivity.java package com.example.tcpsocketclientforandroid; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Button; import android.os.Bundle; public class MainActivity extends ActionBarActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn_accept = (Button) findViewById(R.id.btn_accept); btn_accept.setOnClickListener(this); } @Override public void onClick(View v) { new Thread() { @Override public void run() { try { acceptServer(); } catch (IOException e) { e.printStackTrace(); } } }.start(); } private void acceptServer() throws IOException { //1.创建客户端Socket,指定服务器地址和端口,其中服务器地址是本机ip,端口自定义. Socket socket = new Socket("192.168.31.160", 12345); //2.获取输出流,向服务器端发送信息 OutputStream os = socket.getOutputStream();//字节输出流 PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流 //获取客户端的IP地址 InetAddress address = InetAddress.getLocalHost(); String ip = address.getHostAddress(); pw.write("客户端:~" + ip + "~ 接入服务器!!"); pw.flush(); socket.shutdownOutput();//关闭输出流 socket.close(); } }
(二)、Android客户端界面布局的程序代码
Android客户端界面布局的程序代码:activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.tcpsocketclientforandroid.MainActivity" > <Button android:id="@+id/btn_accept" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/accept" /> </LinearLayout>
(三)、Android客户端编辑字符串的程序代码
Android客户端编辑字符串的程序代码:strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">TcpSocketClientForAndroid</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="accept">Accept</string> </resources>
(四)、Android客户端程序配置的程序代码
Android客户端程序配置的程序代码:AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.tcpsocketclientforandroid" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
四、运行基于TCP/IP协议的Java服务端与Android客户端的流程图
(1)、鼠标右键点击TcpSocketServerForJava项目——鼠标光标移动到Run As项——点击Java Application项
(2)、点击Java Application项后,Console栏打印输出信息。
(3)、鼠标右键点击TcpSocketClientForAndroid项目——鼠标光标移动到Run As项——点击Android Application项。
(4)、点击Android Application项后,弹出TcpSocketClientForAndroid项目的Android模拟器客户端界面。
(5)、点击Android模拟器客户端界面上的Accept按钮
(6)、点击Android模拟器客户端界面上的Accept按钮后,Console栏打印输出信息。
相关文章推荐
- Java基于socket实现的客户端和服务端通信功能完整实例
- 基于Socket的TCP长连接(服务端Java+客户端Android),Service配合AIDL实现
- android native c java进行本地socket通信----java服务端 C客户端
- 基于tcp协议的socket客户端与服务端的通信-java
- android的NDK和java进行本地socket通信-----C服务端,java客户端
- android客户端和java服务端之间用socket来传输图片
- Android Socket 聊天工具(一个服务端实现多个客户端间通信)
- 【Socket网络通信】利用TCP/IP协议实现从服务端的文件中读取数据打印到客户端的控制台,服务端对客户端输入过来的数据做出响应...
- Java 基于 UDP 实现 Socket中的多客户端通信
- Windows客户端与Android服务端的Socket通信(USB)
- 基于tcp的socket通信(单个客户端与服务端)
- android端基于socket的局域网内服务器与客户端加密通信
- java Socket客户端服务端通信小实例
- android客户端和java服务端之间用socket来传输图片
- android客户端和java服务端之间用socket来传输图片(示例代码)
- android客户端和java服务端之间用socket来传输图片(示例代码)
- Android学之客户端服务端Socket简单通信
- Android Socket编程基于TCP实现客户端与服务器简易通信
- java写的Socket客户端和服务端通信,经验证可以执行的代码,并添加了很多注释
- C#Socket编程多客户端基于同一服务端通信