1.介绍

2.使用方法

3.java后台代码

服务器server

package com.lucky.servertest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket; public class MyServer {
public static final String bm="gbk"; //定义客户端和服务器通信的统一编码
public static void main(String[] args) throws IOException { ServerSocket serverSocket=new ServerSocket(30003); //实例化一个服务器套接字,30003为端口号
while (true){
Socket socket=serverSocket.accept(); //获取套接字
InputStream inputStream=socket.getInputStream(); //服务器socket输入流,从socket中读取数据
OutputStream outputStream=socket.getOutputStream();//服务器socket输出流,对应数据的写操作
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream)); //读取客户端传输过来的数据
String str=bufferedReader.readLine();
System.out.println(str); //控制台输出utf-8
PrintStream printStream=new PrintStream(outputStream);
printStream.println(new String(("收到的消息:").getBytes(bm))+str); //将数据传递给客户端
//printStream.println("收到的消息:"+str); //将数据传递给客户端
}
}
}

客户端手机

package com.lucky.test49socket1;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.net.Socket; public class MainActivity extends AppCompatActivity {
EditText editText;
TextView textView;
Button button1;
String stringTemp;
String datastr;
public static final String bm="gbk";
//将接收到的服务器数据显示到textview
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what==0x01){
try {
textView.setText("1"+new String(stringTemp.getBytes(bm)));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=findViewById(R.id.editText);
textView=findViewById(R.id.textView2);
button1=findViewById(R.id.button);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(){
@Override
public void run() {
try {
Socket socket=new Socket("192.168.228.2",30003); //向服务器发送消息,socket输出流,写
OutputStream outputStream=socket.getOutputStream();
PrintStream printStream=new PrintStream(outputStream);
printStream.println("<-----杭州--->"+editText.getText().toString());//将数据传输到Myserver服务器 //接收来自服务器的消息
InputStream inputStream=socket.getInputStream(); //socket输入流,读
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream,bm));
stringTemp=bufferedReader.readLine();
handler.sendEmptyMessage(0x01); } catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
});
}
}

Android TCP协议的Socket通信的更多相关文章

  1. python 30 基于TCP协议的socket通信

    目录 1. 单对单循环通信 2. 循环连接通信:可连接多个客户端 3. 执行远程命令 4. 粘包现象 4.1 socket缓冲区 4.2 出现粘包的情况: 4.3 解决粘包现象 bytes 1. 单对 ...

  2. 基于TCP协议的socket通信

    一.服务器端 1.创建serverSocket,即服务器端的socket,绑定指定的端口,并侦听此端口 ServerSocket server = new ServerSocket(8888); 2. ...

  3. 基于TCP与UDP协议的socket通信

    基于TCP与UDP协议的socket通信 C/S架构与初识socket 在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是 C/S 架构,互联网中处处充满了 C/S 架构(Cl ...

  4. 基于TCP 协议的socket 简单通信

    DNS 服务器:域名解析 socket 套接字 : ​ socket 是处于应用层与传输层之间的抽象层,也是一组操作起来非常简单的接口(接受数据),此接口接受数据之后,交由操作系统 为什么存在 soc ...

  5. 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  6. Python进阶----UDP协议使用socket通信,socketserver模块实现并发

    Python进阶----UDP协议使用socket通信,socketserver模块实现并发 一丶基于UDP协议的socket 实现UDP协议传输数据 代码如下:

  7. day31——recv工作原理、高大上版解决粘包方式、基于UDP协议的socket通信

    day31 recv工作原理 源码解释: Receive up to buffersize bytes from the socket. 接收来自socket缓冲区的字节数据, For the opt ...

  8. 自学Python-基于tcp协议的socket

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  9. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

随机推荐

  1. solr java api 使用solrj操作zookeeper集群中的solrCloud中的数据

    1 导入相关的pom依赖 <dependencies> <dependency> <groupId>org.apache.solr</groupId> ...

  2. 4-3 线程安全性-原子性-synchronized

    原子性它提供了互斥访问,同一时刻只能有一个线程来对它进行操作.能保证同一时刻只有一个线程来对其进行操作的,除了Atomic包之外,还有锁.JDK提供锁主要分两种,synchronized是一个Java ...

  3. linux tcpdump补充

    If they are going across the loopback interface, you may have to tell tcpdump to read that interface ...

  4. bootstrap设计网站中添加代码高亮插件

    这款插件的名字叫做google-code-prettify 使用该插件之前的效果: 使用插件之后的效果: 接下来说步骤: (1)下载两个文件 http://codecloud.sinaapp.com/ ...

  5. Visual Studio + C# + Xamarin = iOS/Android/Windows Apps

    Visual Studio 跨平台開發實戰 (1) -- Hello Xamarin! 前言 應用程式發展的腳步,從來沒有停過.從早期的 Windows 應用程式, 到網路時代的 web 應用程式,再 ...

  6. ubuntu PCL的使用

    cmake_minimum_required(VERSION 2.8) project(MY_GRAND_PROJECT) find_package(PCL 1.3 REQUIRED COMPONEN ...

  7. k阶原点距和k阶中心距各是说明什么数字特征

    k阶原点距和k阶中心距各是说明什么数字特征 二阶中心距,也叫作方差,它告诉我们一个随机变量在它均值附近波动的大小,方差越大,波动性越大.方差也相当于机械运动中以重心为转轴的转动惯量.(The mome ...

  8. 解决error C2365

    今天把一个FILE_BOTH_DIRECTORY_INFORMATION结构的变量,愣是写成了“enum”枚举....然后出现error C2365错误. 在CSDN上看到别人遇到问题,有人回复了“如 ...

  9. 41、OrthoMCL和mcl软件进行基因家族分析

    转载:http://www.realbio.cn/news/124.html https://blog.csdn.net/seallama/article/details/43820763 http: ...

  10. setnx()

    setnx(key,value):当指定的key不存在时,为你设置指定的值