`

Android客户端Socket连接PC服务器端(转载加评论)

阅读更多
先上代码:
1. SocketConnect.java文件
package cn.com;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SocketConnect extends Activity {

	private TextView mTextView = null;
	private EditText mEditText = null;
	private Button mButton = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		mButton = (Button) findViewById(R.id.Button01);
		mTextView = (TextView) findViewById(R.id.TextView01);
		mEditText = (EditText) findViewById(R.id.EditText01);

		// 登陆
		mButton.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Socket socket = null;
				String message = mEditText.getText().toString() + "\r\n";
				try {
					// 创建Socket
					socket = new Socket("192.168.1.100", 5554); // 查看本机IP,每次开机都不同
					// 向服务器发送消息
					PrintWriter out = new PrintWriter(new BufferedWriter(
							new OutputStreamWriter(socket.getOutputStream())),
							true);
					out.println(message);

					// 接收来自服务器的消息
					BufferedReader br = new BufferedReader(
							new InputStreamReader(socket.getInputStream()));
					String msg = br.readLine();

					if (msg != null) {
						mTextView.setText(msg);
					} else {
						mTextView.setText("数据错误!");
					}
					// 关闭流
					out.close();
					br.close();
					// 关闭Socket
					socket.close();
				} catch (Exception e) {
					// TODO: handle exception
					Log.e("", e.toString());
				}
			}
		});
	}
}


2.main.xml文件简单布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<Button android:text="Button01" android:id="@+id/Button01"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
	<TextView android:text="TextView01" android:id="@+id/TextView01"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
	<EditText android:text="EditText01" android:id="@+id/EditText01"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
</LinearLayout>

3.注意添加AndroidMenifest.xml的权限
<uses-permission android:name="android.permission.INTERNET" />

4.服务器端,就是建立一个简单的java文件,运行起来就可以了
package cn.com;

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 Server implements Runnable {
	public void run() {
		try {
			// 创建ServerSocket
			ServerSocket serverSocket = new ServerSocket(5554);
			while (true) {
				// 接受客户端请求
				Socket client = serverSocket.accept();
				System.out.println("accept");
				try {
					// 接收客户端消息
					BufferedReader in = new BufferedReader(
							new InputStreamReader(client.getInputStream()));
					String str = in.readLine();
					System.out.println("read:" + str);
					// 向服务器发送消息
					PrintWriter out = new PrintWriter(new BufferedWriter(
							new OutputStreamWriter(client.getOutputStream())),
							true);
					out.println("server message");
					// 关闭流
					out.close();
					in.close();
				} catch (Exception e) {
					System.out.println(e.getMessage());
					e.printStackTrace();
				} finally {
					// 关闭
					client.close();
					System.out.println("close");
				}
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}

	// main函数,开启服务器
	public static void main(String a[]) {
		Thread desktopServerThread = new Thread(new Server());
		desktopServerThread.start();
	}
}


以上即为所以代码,希望大家有所收获...感谢志毅的blog啊,之前写过差不多的代码没有调试成功还....
呵呵
分享到:
评论
6 楼 Mirale 2014-05-26  
不得不说,你这个代码已经过时了,现在android4.0以上的系统,都不能在主进程中进行网络数据的交互,所以上面的代码会出现连不上服务器的异常
5 楼 lenomon 2012-03-11  
搜索了下发现这篇文章还行,http://orgcent.com/pc-android-emulator-socket/
4 楼 xiaojian623 2011-08-02  
我也想知道二楼的问题!!!
3 楼 ray111 2011-04-09  
按照你的方法,服务器从android中接收的中文信息显示的是乱码,如何改进一下呢?
2 楼 xiaofeng1986 2011-03-17  
您好,看了好多与这相关的程序,都是内网地址连接的,不知道通过外网的地址连接能否实现
1 楼 JasonShieh 2010-10-20  
这种情况下,必须开启局域网连接才行,访问本机也要开启局域网,很不爽的

相关推荐

    Android客户端Socket连接PC服务器端[收集].pdf

    这里的“Android客户端Socket连接PC服务器端”是指通过Socket在Android客户端应用程序与运行在个人计算机(PC)上的服务器程序之间建立连接,实现数据交换。以下是关于这个主题的详细解释: **Socket基础** Socket...

    Android客户端Socket连接PC服务器端.pdf

    在Android客户端通过Socket连接到PC服务器端的过程中,主要涉及网络通信和Android应用开发的相关知识点。以下是对这些内容的详细说明: 1. **Socket编程**:Socket是网络编程的基础,它提供了一种进程间通信(IPC)...

    Android客户端Socket连接PC服务器端[归类].pdf

    在Android客户端应用开发中,有时候需要与PC服务器端进行数据通信,这通常涉及到网络编程的知识,特别是使用Socket进行TCP/IP连接。在这个场景下,Android客户端通过Socket连接到PC服务器端,实现数据的发送和接收。...

    Android客户端与PC服务器实现Socket通信

    PC 服务器端使用 ServerSocket 对象监听来自客户端的 Socket 连接。首先,创建 ServerSocket 对象,并指定监听端口号。然后,使用 accept() 方法监听来自客户端的连接请求。当接收到连接请求后,获取消息到输入流,...

    android基于WiFi的socket客户端和服务器端

    在Android平台上实现基于WiFi的Socket通信,涉及到网络编程的核心概念,包括TCP/IP协议、套接字(Socket)以及客户端(Client)与服务器端(Server)的交互。本篇将详细阐述这些知识点,并以"SocketServer"和"Socket...

    Android客户端与PC服务器利用WIFI实现Socket通讯

    在 PC 服务器端,我们使用 ServerSocket 对象来监听来自客户端的 Socket 连接。首先,我们创建一个 ServerSocket 对象,并指定监听的端口号。然后,我们使用 accept() 方法来接受来自客户端的连接请求。当接受到连接...

    Android实现远程控制PC(Android[客户端]+Qt[服务器端])

    在本项目中,Qt服务器端扮演的角色是接收来自Android客户端的指令,并在PC上执行相应操作。实现步骤可能包括: 1. 创建服务器监听:设置一个服务器端口,用于监听客户端连接请求。 2. 数据解析:接收到客户端发送的...

    详解Android客户端与服务器交互方式

    最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json。要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台、传输数据格式...

    android聊天室客户端与服务端(PC)代码

    **PC服务器端** 服务器端部分主要关注以下内容: 1. **服务器框架**:可能使用Java的Spring Boot或.NET的ASP.NET Core作为服务器框架,提供RESTful API或WebSocket服务。 2. **网络编程**:使用Socket编程实现TCP...

    android客户端连接pc服务端

    Socket通信可以分为客户端Socket和服务器端Socket两种,其中客户端Socket用于发起连接请求,服务器端Socket用于监听并接收连接请求。 #### 二、关键概念 - **Socket**:Socket是一种双向通信的管道,用于连接...

    PC与Android客户端的Socket通讯

    标题中的“PC与Android客户端的Socket通讯”是指在个人计算机(PC)和运行Android操作系统的设备之间通过Socket进行网络通信的技术。Socket是网络编程的基本组件,它提供了进程间通信(IPC)的能力,使得两个不同...

    PC客户端与Android服务端的Socket同步通信.docx

    1. **Android端作为Socket服务器**:运行在后台的服务程序,负责接收来自PC客户端的命令,并处理数据后将结果返回给PC客户端。 2. **PC端作为Socket客户端**:发送操作命令给Android端的应用程序。 #### 技术难点...

    基于Socket的Android手机视频实时传输服务器端

    5. **服务器端处理**:在PC服务器端,接收到的Socket数据需要解码并处理,这通常涉及到对RTP包的解析,以及将数据重组为连续的视频流。服务器可能还需要具备多路复用和分发能力,如果有多台Android设备同时向服务器...

    android app与pc通信,USB连接socket通信,

    在PC端,我们需要创建一个服务器Socket监听特定端口,等待Android客户端的连接。当连接建立后,双方就可以通过Socket的输入流和输出流进行数据交换。这通常涉及到数据的序列化和反序列化,以便正确地在两端解析和...

    安卓Socket与pc端c#服务器的通信完整代码(包含C#服务器与安卓项目工程)

    在这个场景中,我们关注的是安卓客户端(Android)通过Socket与PC端的C#服务器进行通信。Socket是网络编程的基础,它允许两个程序通过网络交换数据。本篇文章将深入探讨如何实现这个过程,包括C#服务器和安卓客户端...

    android socket通信客户端服务器源代码

    需要注意的是,为了在真机上测试,服务器端需要运行在PC或其他服务器上,而客户端则是在Android设备上。确保设备与服务器在同一网络环境下,可以通过获取设备的IP地址(例如使用`InetAddress.getLocalHost()....

    android socket编程 PC端

    `Socket`用于客户端,而`ServerSocket`用于服务器端。 **TCP(Transmission Control Protocol)**是一种面向连接的、可靠的传输协议。在TCP通信开始前,客户端需要先与服务器建立连接(三次握手),然后才能进行...

    Android代码-Socket编程源码与PC通讯.zip

    这个压缩包中的“Socket编程源码(与PC通讯)”应该包含了上述步骤的完整实现,包括Android客户端和PC服务器端的代码。通过查看和运行这些示例代码,开发者可以深入理解Socket通信的工作原理,如何在Android应用中...

    Android-LittleDrawBoardPC端是基于Socket实现的android端和PC端同步绘画板

    1. 监听并接受连接:服务器端创建ServerSocket,并通过accept方法等待Android客户端的连接。 2. 接收并解析数据:当收到Android端的数据时,服务器端需要解析这些绘画指令,可能涉及到序列化和反序列化的操作。 3. ...

Global site tag (gtag.js) - Google Analytics