TCP链接从服务器到客户端DEMO
来源:互联网 发布:织梦cms标签调用 编辑:程序博客网 时间:2024/06/07 02:32
我们先启一个服务,用来做服务器端。所以现在主线程中起一个服务。
package com.android.tcpservice;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import com.android.tcpservice.service.TCPService;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init(){ Intent intent = new Intent(this, TCPService.class); // this.startService(intent); }}由于网络连接不允许放在主线程中操作,所以我们得新启一个线程。在新启的线程中操作:
package com.android.tcpservice.service;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.support.annotation.Nullable;import android.util.Log;import com.android.tcpservice.TCPLogic;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;/** * Created by xalo on 16/8/24. * 服务器 */public class TCPService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); //写一个匿名类,新起一个线程 new Thread(new Runnable() { @Override public void run() { Log.d("TCP", "TCP Thread is running 启动了"); try { //接口服务(监听接口) ServerSocket ss = new ServerSocket(50000); //获得链接(阻断式)这条数据是阻塞式的 Socket socket; //接受消息 while ((socket = ss.accept()) != null) { new Thread(new TCPLogic(socket)).start(); } Log.d("XML", socket.getInetAddress().toString()); } catch (IOException e) { e.printStackTrace(); } Log.d("TCP", "TCP Thread is end 结束了"); } }).start(); }}新建一个类实现Running。
package com.android.tcpservice;import android.util.Log;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.Socket;/** * Created by xalo on 16/8/24. */public class TCPLogic implements Runnable { Socket socket; public TCPLogic(Socket socket) { this.socket = socket; } @Override public void run() { try { InputStream in = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String str; while ((str = br.readLine()) != null) { Log.d("RECIVER", str); } } catch (IOException e) { e.printStackTrace(); } }}最后不要忘了加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
这样我们的服务器端就搭建好了
下面来看看客户端是怎么搭建起来的:
package com.android.tcpclient;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import java.io.BufferedWriter;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;/** * 客户端 */public class MainActivity extends AppCompatActivity { Socket socket; // BufferedWriter bw; PrintWriter pw; Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); new Thread(new Runnable() { @Override public void run() { try { connect(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } private void init() { btn = (Button) findViewById(R.id.btn_send); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendMsg("hello"); } }); } //网络连接不允许在主线程执行 private void connect() throws IOException { InetAddress address = InetAddress.getByName("localhost"); socket = new Socket(address, 50000); //发送消息 //以我为参考系向外发流 OutputStream out = socket.getOutputStream(); //缓存区满了一次性发出去// bw = new BufferedWriter(new OutputStreamWriter(out)); pw = new PrintWriter(out);// bw.write("hello");// //疏通// bw.flush();// //关闭// socket.close(); } private void sendMsg(String msg) {// try {// pw.write(msg); //换行,接受的时候是按行读,不换行接受服务器认为这行没完。 pw.println(msg); pw.flush();// } catch (IOException e) {// e.printStackTrace();// } } private void closeSocket() { try {// pw.flush(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } @Override protected void onDestroy() { super.onDestroy(); closeSocket(); }}
1 0
- TCP链接从服务器到客户端DEMO
- Android TCP 文件客户端与服务器DEMO
- Android TCP 文件客户端与服务器DEMO
- Android TCP 文件客户端与服务器DEMO
- Android TCP 文件客户端与服务器DEMO
- 客户端服务器TCP链接异常状态分析
- 基于TCP的服务器和客户端的简单收发Demo
- python socket之tcp服务器与客户端demo
- tcp客户端服务端demo
- 从客户端PLSQL连接到ORACLE服务器
- 从客户端PLSQL连接到ORACLE服务器
- 从客户端PLSQL连接到ORACLE服务器
- iOS推送,从客户端到服务器
- Android笔记 Android客户端从服务器获取源码乱码demo
- “黑马程序员”使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印
- 10、使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
- 黑马程序员——使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
- 客户端服务器通信demo
- 华为南研所校招软件技术岗几点建议
- Redis配置文档详解
- IJKMediaPlayer静态库制作
- 使用 Bochs 调试操作系统
- iOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
- TCP链接从服务器到客户端DEMO
- 大神博客
- 抓包工具Fiddler
- h5学习笔记: 下拉菜单(2)
- Mysql分库分表实践(短链接的实现)
- 40个Java多线程问题总结 (r)
- python模块datetime使用3
- ssh设置,免密码
- echo(),print(),print_r(),var_dump()的区别