以下是PC端代码

package com.example.sxb.myapplication;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Created by Administrator on 2017/12/13.
*/
public class pcChat {
public static void main(String[] args)
{ //收
new Thread(){
@Override
public void run() {
try {
while(true){
//模拟器5554发,PC收
ServerSocket ss = new ServerSocket(7777);//PC端6666端口接收消息
Socket s = ss.accept ();
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int num = in.read(buf);
String str = new String(buf,0,num);
System.out.println(s.getInetAddress().toString()+":"+str);
s.close();
ss.close();}
} catch (IOException e) {
e.printStackTrace();
} }
}.start();
//发
new Thread(){
@Override
public void run() {
try {
while(true){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
System.out.println("请输入你要发送的内容:");
str = br.readLine();
System.out.println("你发送的消息:"+str);
//PC发,模拟器5554收
Socket s = new Socket("localhost",4444);//向模拟器4444端口号发送消息
OutputStream out = s.getOutputStream();
out.write(str.getBytes());
s.close();}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
} } 以下是模拟器端代码:
package com.example.sxb.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class DochatActivity extends AppCompatActivity {
TextView tv_getMessage;
EditText et_setMessage;
Button bt_send;
String str;
Socket s;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dochat);
tv_getMessage=(TextView) findViewById(R.id.getMessage);
et_setMessage=(EditText) findViewById(R.id.et_setMessage);
bt_send=(Button) findViewById(R.id.bt_send);
new Thread(){
@Override
public void run() {
try {
//收
while(true){
//模拟器5554收,模拟器5556发
ServerSocket ss = new ServerSocket(4444);//模拟器4444接收消息
s = ss.accept ();
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int num = in.read(buf);
str = new String(buf,0,num);
runOnUiThread(new Runnable() {
@Override
public void run() {
tv_getMessage.setText(s.getInetAddress().toString()+":"+str);
}
});
s.close();
ss.close();}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
public void click(View v){
switch (v.getId()){
case R.id.bt_send: new Thread(){
@Override
public void run() {
try {
//发
//模拟器5554发,PC收
Socket s = new Socket("10.0.2.2",7777);//向PC端7777发送消息
//模拟器5554发,模拟器5556收
// Socket s=new Socket("10.0.2.2",6666);//模拟器6666 6666端口号收
OutputStream out = s.getOutputStream();
out.write(et_setMessage.getText().toString().getBytes());
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
}
}
以下是布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/getMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="即将接收消息..."
/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<EditText
android:id="@+id/et_setMessage"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:textSize="20sp"
android:hint="请输入消息"
/>
<Button
android:id="@+id/bt_send"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="发送"
android:layout_toRightOf="@+id/et_setMessage"
android:onClick="click"/>
</RelativeLayout>
</LinearLayout> 写完代码以后的操作步骤:
1.在cmd输入指令:telnet,检查telnet有没有打开;
2.控制面板》程序》程序和功能》打开或关闭Windows功能》勾选Telnet服务器和telnet客户端;
3.telnet localhost 5554(注意:打开模拟器5554之后操作这一步);
4.去 C:\Users\neusoft\.emulator_console_auth_token 下面用记事本打开复制token;
5.在cmd 输入 :auth 44kZIm47P+BkAPhI;(不同电脑可能不一样,看token里面的数据)
6.在cmd输入:redir add tcp:4444:4444;
(端口重映射 )
tcp:电脑端口号:模拟器端口号

Android-TCP编程的更多相关文章

  1. Android网络编程系列 一 TCP/IP协议族

    在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...

  2. Android网络编程基础

    Android网络编程只TCP通信 TCP 服务器端工作的主要步骤如下.步骤1 调用ServerSocket(int port)创建一个ServerSocket,并绑定到指定端口上.步骤2 调用acc ...

  3. Android网络编程系列 一 Socket抽象层

     在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽 ...

  4. Android网络编程概述

    Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...

  5. Android网络编程要学的东西与Http协议学习

    本节引言: 本节开始我们来学习Android网络编程相关的一些东西:Android端网络编程是要干嘛?http协议的学习,使用自带扣脚Json解析类解析Json,XML解析常用的几种方式,HttpUr ...

  6. 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

  7. 【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

  8. Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

  9. Android 网络编程 API笔记 - java.net 包相关 接口 api

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

  10. Android 网络编程 记录

    简单介绍 看了深入理解Android网络编程感觉不错.今天对Android网络编程进行了要点记录. 内容 Android基于网络技术和编程实践 要点 定义 描写叙述 IP协议 用于报文交换网络的一种面 ...

随机推荐

  1. 使用RT3070使开发板上网

    原文地址:http://www.cnblogs.com/NickQ/p/8973880.html 使开发板上网 USB驱动部分 在arch/arm/mach-s3c2440/mach-smdk2440 ...

  2. PTA-括号问题

    括号问题 作者: 李廷元 单位: 中国民用航空飞行学院 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB 问题描述 给定一串字符,不超过100个字符,可能包括括号.数字.字 ...

  3. 2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)

    2017-2018-1 20155305 <信息安全系统设计基础>第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客) 课堂提交题目要求 编写MyOD.java 用java ...

  4. PyQt5 笔记(03):弹出窗口大全

    本文实现了PyQt5个各种弹出窗口:输入框.消息框.文件对话框.颜色对话框.字体对话框.自定义对话框 其中,为了实现自定义对话框的返回值,使用了信号/槽 本文基于 windows 7 + python ...

  5. cogs791 [HAOI2012] 音量调节

    大水题 这种题谁不能1A谁就吔屎/退役吧(说的就是我) 设dp[i][j]表示调完前i个音量为j有没有可能 没了 // It is made by XZZ // Fei Fan Ya Xi Lie~~ ...

  6. Object C学习笔记9-字符串NSMutableString

    NSMutableString类继承自NSString,所以在NSString中的方法在NSMutableString都可以使用. NSMutableString和NSString的区别在于NSMut ...

  7. Famous框架系列一:famous/core/Surface

    famous/core/Surface 既然是Famous的第一篇文章,就先给Famous打个广告:http://periodic.famo.us  Famous12年的作品,点击右下角Fun thi ...

  8. Tomcat 基础

    一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...

  9. 程序员,Python 这次彻底上位了!

    在 2018 年底,我们迎来了编程语言的最后一波洗礼.近期 TIOBE 公布了 12 月编程语言排行榜,前三名变为: Java.C.Python. 而在 PYPL 榜单上 Python 在今年 5 月 ...

  10. 2018年美国大学生数学建模竞赛(MCM/ICM) 比赛心得

    话不多说,题目先上: 这是我们这次选择的题目,说说建模的那些事! 美赛的时间和国赛挑战杯时间略有不同,貌似多的一天是为了让我们对文章进行一个翻译吧QAQ 建议参加美赛的同学可以参照此计划进行 Day0 ...