Android自学笔记(二)基于Socket实现Android与PC通信

这篇博客介绍了如何使用TCP协议实现Android设备与PC之间的通信。在PC端,利用Java创建ServerSocket监听特定端口,接收并显示来自Android设备的数据。在Android应用中,实现了发送消息到指定IP和端口的功能,当用户点击按钮时,会将输入框内容通过Socket发送到PC。
摘要由CSDN通过智能技术生成
TCP协议简介什么的百度一大把,这里直接粘代码……参考了网上找来的源码

PC端用Java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPDesktopServer implements Runnable{

 
    public static final String SERVERIP = "192.168.155.1";

    public static final int SERVERPORT = 1818;

 
    public void run() {

         try {

             System.out.println("S: Connecting...");

             ServerSocket serverSocket = new ServerSocket(SERVERPORT);

             while (true) {

                  Socket client = serverSocket.accept();

                  try {

                      BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));

                      String str = in.readLine();

                      System.out.println("S: Received: '" + str + "'");
 
                    } catch(Exception e) {

                        System.out.println("S: Error");

                        e.printStackTrace();

                    } finally {

                        client.close();

                        System.out.println("S: Done.");

                    }

             }

          } catch (Exception e) {

             System.out.println("S: Error");

             e.printStackTrace();
         }
    }
 
   public static void main (String a[]) {

        Thread ServerThread = new Thread(new TCPDesktopServer());

        ServerThread.start();
    }

Android
package com.socket.client;


import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class main extends Activity{
    /** Called when the activity is first created. */
	
	private EditText Msgcontainer;
	private Button BtnSend;
	private String ip="192.168.155.1";
	private int port=1818;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        SetOnClick();
    }
    
    private void SetOnClick()
    {

    	Msgcontainer=(EditText)findViewById(R.id.msg_container);
    	BtnSend=(Button)findViewById(R.id.btn_send);
    	
    	BtnSend.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				try 
				{
					String msg=Msgcontainer.getText().toString();
					if(!TextUtils.isEmpty(msg))
						SendMsg(ip,port,msg);
					else
					{
						Toast.makeText(main.this,"msg is EMPTY!!", Toast.LENGTH_LONG).show();
						Msgcontainer.requestFocus();
					}
				}
			 catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			 	}
			}
		});
    }
    
    public void SendMsg(String ip,int port,String msg) throws UnknownHostException, IOException
    {
    	try
    	{
    	Socket socket=null;
    	socket=new Socket(ip,port);
    	BufferedWriter writer=new BufferedWriter(new OutputStreamWriter
    			(socket.getOutputStream()));
    	writer.write(msg);
    	writer.flush();
    	writer.close();       
    	socket.close();
    	}
    	catch(UnknownHostException e)
    	{
    		e.printStackTrace();
    	} catch (IOException e) 
    	{
    	    e.printStackTrace();
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值