Android手机通过socket与pc通信

    在Android中可以直接利用java中的Socket与ServerSocket构建socket通信。

    代码的运行环境:

    pc端:普通pc,作为服务器,已经设置有域名(通过动态域名软件设置),在5648端口进行监听。

    Android手机客户端:android2.3设备。


    代码运行一切正常,客户端发送的文字将在服务器端接收并显示,服务器每接收到客户端的一行文字,就会返回一个从0开始递增的整数,此整数将在客户端显示出来。

    pc端代码:

    

package test;

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.ServerSocket;
import java.net.Socket;


public class Test implements Runnable{

	/**
	 * @param args
	 */
	
	int max=10;      //最大开启线程数
	int i=0;         //回复数字
	int temp;
	ServerSocket serverSocket;
	Socket socket[];
	
	public Test(){
		
		try {
			serverSocket=new ServerSocket(5648);    //在5648端口进行侦听
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("can't initate ServerSocket!");
			return;
		}
		
		socket=new Socket[max];
		
		System.out.println("waiting for connect");
		try {
			while((socket[i]=serverSocket.accept())!=null){
				temp=i;
				i++;
				new Thread(this).start();           //每侦听到一个客户端的连接,就会开启一个工作线程
				
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		new Test();

  • 17
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
AndroidPC之间进行TCP通信可以分为两个部分:客户端和服务端。其中,Android设备可以是客户端或服务端,PC也可以是客户端或服务端,因此总共有四种组合方式。 下面是一个基本的Android客户端和PC服务端之间的TCP通信示例: 1. 客户端代码(Android平台) ```java public class MainActivity extends AppCompatActivity { private Button mBtnConnect; private EditText mEtIP, mEtPort, mEtContent; private TextView mTvResponse; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtnConnect = findViewById(R.id.btn_connect); mEtIP = findViewById(R.id.et_ip); mEtPort = findViewById(R.id.et_port); mEtContent = findViewById(R.id.et_content); mTvResponse = findViewById(R.id.tv_response); mBtnConnect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { try { // 获取IP地址和端口号 String ip = mEtIP.getText().toString().trim(); int port = Integer.parseInt(mEtPort.getText().toString().trim()); // 创建Socket对象 Socket socket = new Socket(ip, port); // 获取输出流 OutputStream outputStream = socket.getOutputStream(); // 发送数据 String content = mEtContent.getText().toString().trim(); outputStream.write(content.getBytes("UTF-8")); // 获取输入流 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = inputStream.read(buffer); final String response = new String(buffer, 0, len, "UTF-8"); // 显示响应结果 runOnUiThread(new Runnable() { @Override public void run() { mTvResponse.setText(response); } }); // 关闭Socket对象 socket.close(); } catch (Exception e) { e.printStackTrace(); } } }).start(); } }); } } ``` 2. 服务端代码(PC平台) ```java public class Server { public static void main(String[] args) { try { // 创建ServerSocket对象,并指定端口号 int port = 8888; ServerSocket serverSocket = new ServerSocket(port); // 等待客户端连接 System.out.println("等待客户端连接..."); Socket socket = serverSocket.accept(); System.out.println("客户端已连接。"); // 获取输入流 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = inputStream.read(buffer); String content = new String(buffer, 0, len, "UTF-8"); System.out.println("接收到客户端的数据:" + content); // 处理数据 String response = "Hello, Android!"; // 获取输出流 OutputStream outputStream = socket.getOutputStream(); // 发送数据 outputStream.write(response.getBytes("UTF-8")); // 关闭Socket对象 socket.close(); serverSocket.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在运行代码之前,需要确保Android设备和PC在同一个局域网中,并且知道PC的IP地址和端口号。如果PC的IP地址为192.168.1.100,端口号为8888,则Android设备需要将IP地址设置为192.168.1.100,端口号设置为8888。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值