android虚拟机与PC机的socket通信

本文介绍了一个简单的Android客户端与PC端Java服务器之间的Socket通信实例。客户端通过按钮触发连接,并发送消息到服务器;服务器接收消息并返回确认信息。文章提供了完整的客户端和服务端代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android部分代码如下:

注意:在Manifest.xml中需要添加网络访问许可<uses-permission android:name="android.permission.INTERNET" />

package com.test.socket;

 

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

 

public class SocketActivity extends Activity implements OnClickListener {

    /** Called when the activity is first created. */

private TextView tv;

private Button btn, btn_exit;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        tv = (TextView)findViewById(R.id.message);

        tv.setText("Ready");

        btn = (Button)findViewById(R.id.send);

        btn.setOnClickListener(this);

        btn_exit = (Button)findViewById(R.id.exit);

        btn_exit.setOnClickListener(this);

    }

    public void onClick(View v) {

    if (v == btn) {

    tv.setText("Start");

    int port = 7100;

    try {

    Socket socket = new Socket("10.10.15.79", port);

    OutputStream out = socket.getOutputStream();

    DataOutputStream dout = new DataOutputStream(out);

    dout.writeUTF("Jordan");

    InputStream in = socket.getInputStream();

    DataInputStream din = new DataInputStream(in);

    String str = din.readUTF();

    tv.setText(str);

    in.close();

    out.close();

    socket.close();

    }catch (UnknownHostException e) {

// TODO: handle exception

    tv.setText("UnknownHostError");

}catch (IOException e) {

// TODO: handle exception

tv.setText("IOError");

}

    } else if (v == btn_exit) {

    finish();

    }

    }

}

PC机端使用Java作为服务器,创建ServerSocket,之后等待客户端连接。具体代码如下:

import java.net.*;

import java.io.*;

 

public class SocketAppServer {

 

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

ServerSocket ss = null;

int port = 7100;

String hello="From Server:Hello World!";

//create ServerSocket

try {

ss = new ServerSocket(port);

}catch (IOException e) {

// TODO: handle exception

System.out.println(e);

System.exit(1);

}

//accept client connection

while(true) {

try {

System.out.println("Waiting for connection on port="+port);

Socket cs = ss.accept();

InputStream input = cs.getInputStream();

DataInputStream din = new DataInputStream(input);

String name = din.readUTF();

OutputStream output = cs.getOutputStream();

DataOutputStream dout = new DataOutputStream(output);

dout.writeUTF(hello+"Your name:"+name);

System.out.println("Connection OK port="+port);

System.out.println("=========================");

din.close();

output.close();

cs.close();

}catch (IOException e) {

// TODO: handle exception

System.out.println(e);

}

}

}

}

转载于:https://my.oschina.net/linuxhunter/blog/38597

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值