Android Socket编程
16lz
2021-01-23
Server部分的Java代码:
package com.wll.mysocket;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class myServer implements Runnable{
public void run() {
try {
ServerSocket serverSocket=new ServerSocket(54321);
while(true)
{
System.out.println("接收用户连接:");
//接受客户端请求
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:"+str);
in.close();
out.close();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
ex.printStackTrace();
}
finally
{
client.close();
System.out.println("close");
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public static void main(String [] args)
{
Thread desktopServerThread=new Thread(new myServer());
desktopServerThread.start();
}
}
--------------------------------------------------------------------------------
客户端用Android代码编写:
package com.wll.mysocket;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import android.*;
//客户端的实现
public class mySocketAct extends Activity {
private TextView text1;
private Button but1;
private EditText edit1;
private final String DEBUG_TAG="mySocketAct";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text1=(TextView)findViewById(R.id.text1);
but1=(Button)findViewById(R.id.but1);
edit1=(EditText)findViewById(R.id.edit);
but1.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v) {
Socket socket=null;
String mesg=edit1.getText().toString()+"\r\n";
edit1.setText("");
try {
socket=new Socket("10.0.2.2",54321);
//向服务器发送信息
PrintWriter out=new PrintWriter(new BufferedWriter(new
OutputStreamWriter(socket.getOutputStream())),true);
out.println(mesg);
//接受服务器的信息
BufferedReader br=new BufferedReader(new InputStreamReader
(socket.getInputStream()));
String mstr=br.readLine();
if(mstr!=null)
{
text1.setText(mstr);
}else
{
text1.setText("数据错误");
}
out.close();
br.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e)
{
Log.e(DEBUG_TAG,e.toString());
}
}
});
}
}
--------------------------------------------------------------------------------
其中很重要的一个问题是:
电脑与模拟器之间的通信问题,必须在AndroidManifest.xml中编写:
<uses-permission android:name="android.permission.INTERNET" />
package com.wll.mysocket;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class myServer implements Runnable{
public void run() {
try {
ServerSocket serverSocket=new ServerSocket(54321);
while(true)
{
System.out.println("接收用户连接:");
//接受客户端请求
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:"+str);
in.close();
out.close();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
ex.printStackTrace();
}
finally
{
client.close();
System.out.println("close");
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public static void main(String [] args)
{
Thread desktopServerThread=new Thread(new myServer());
desktopServerThread.start();
}
}
--------------------------------------------------------------------------------
客户端用Android代码编写:
package com.wll.mysocket;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import android.*;
//客户端的实现
public class mySocketAct extends Activity {
private TextView text1;
private Button but1;
private EditText edit1;
private final String DEBUG_TAG="mySocketAct";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text1=(TextView)findViewById(R.id.text1);
but1=(Button)findViewById(R.id.but1);
edit1=(EditText)findViewById(R.id.edit);
but1.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v) {
Socket socket=null;
String mesg=edit1.getText().toString()+"\r\n";
edit1.setText("");
try {
socket=new Socket("10.0.2.2",54321);
//向服务器发送信息
PrintWriter out=new PrintWriter(new BufferedWriter(new
OutputStreamWriter(socket.getOutputStream())),true);
out.println(mesg);
//接受服务器的信息
BufferedReader br=new BufferedReader(new InputStreamReader
(socket.getInputStream()));
String mstr=br.readLine();
if(mstr!=null)
{
text1.setText(mstr);
}else
{
text1.setText("数据错误");
}
out.close();
br.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e)
{
Log.e(DEBUG_TAG,e.toString());
}
}
});
}
}
--------------------------------------------------------------------------------
其中很重要的一个问题是:
电脑与模拟器之间的通信问题,必须在AndroidManifest.xml中编写:
<uses-permission android:name="android.permission.INTERNET" />
更多相关文章
- Android 定时到服务器取数据并刷新
- Android客户端自动更新代码
- android 客户端 smtp 协议发送数据
- Android手机访问web服务器(post请求)
- 客户端性能测试
- Android使用的MQTT客户端
- 开源中国WP7客户端全面开源,包括iPhone客户端与Android
- android 获取sim卡运营商信息
- 一步步教你为网站开发Android客户端