`

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

 
阅读更多
先上代码:
1. SocketConnect.java文件
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());  
                }  
            }  
        });  
    }  


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文件简单布局
Java代码 
<?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> 

<?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的权限
Java代码 
<uses-permission android:name="android.permission.INTERNET" /> 

<uses-permission android:name="android.permission.INTERNET" />

4.服务器端,就是建立一个简单的java文件,运行起来就可以了
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();  
    }  


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啊,之前写过差不多的代码没有调试成功还....
分享到:
评论

相关推荐

    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