Android 台灣中文網
標題:
Android與PC的socket通信
[打印本頁]
作者:
暗桌之光
時間:
2011-7-24 11:52
標題:
Android與PC的socket通信
我們今天就來說說android怎麼樣才能和PC通信,這個我們就要用到socket了,那麼我們現在就來用一個小例子來看看。在代碼中我都用了註釋,希望大家來看看我發的帖子。
java代碼:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class YaoChatServer extends Thread {
private YaoChatServer() throws IOException {
CreateSocket();
//創建Socket服務器
}
public void run() {
Socket client;
String txt;
try {
while (true)
//線程無限循環,實時監聽socket端口
{
client=ResponseSocket();
//響應客戶端鏈接請求。。
while(true)
{
txt=ReceiveMsg(client);
System.out.println(txt);
//鏈接獲得客戶端發來訊息,並將其顯示在Server端的螢幕上
SendMsg(client,txt);
//向客戶端返回訊息
if(true)break;
//中斷,繼續等待鏈接請求
}
CloseSocket(client);
//關閉此次鏈接
}
}
catch (IOException e) {
System.out.println(e);
}
}
private ServerSocket server = null;
private static final int PORT = 5000;
private BufferedWriter writer;
private BufferedReader reader;
private void CreateSocket() throws IOException
{
server = new ServerSocket(PORT, 100);
System.out.println("Server starting..");
}
private Socket ResponseSocket() throws IOException
{
Socket client = server.accept();
System.out.println("client connected..");
return client;
}
private void CloseSocket(Socket socket) throws IOException
{
reader.close();
writer.close();
socket.close();
System.out.println("client closed..");
}
private void SendMsg(Socket socket,String Msg) throws IOException
{
writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
writer.write(Msg+"\n");
writer.flush();
}
private String ReceiveMsg(Socket socket) throws IOException
{
reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
System.out.println("server get input from client socket..");
String txt="Sever send:"+reader.readLine();
return txt;
}
public static void main(final String args[]) throws IOException {
YaoChatServer yaochatserver = new YaoChatServer();
if (yaochatserver != null) {
yaochatserver.start();
}
}
}
複製代碼
java代碼:
package eoe.demo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.net.UnknownHostException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class YaoChatRoomAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findviews();
setonclick();
}
private EditText chattxt;
private TextView chattxt2;
private Button chatok;
public void findviews()
{
chattxt = (EditText)this.findViewById(R.id.chattxt);
chattxt2 = (TextView)this.findViewById(R.id.chattxt2);
chatok = (Button)this.findViewById(R.id.chatOk);
}
private void setonclick()
{
chatok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
connecttoserver(chattxt.getText().toString());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
public void connecttoserver(String socketData) throws UnknownHostException, IOException
{
Socket socket=RequestSocket("192.168.10.119",5000);
SendMsg(socket,socketData);
String txt = ReceiveMsg(socket);
this.chattxt2.setText(txt);
}
private Socket RequestSocket(String host,int port) throws UnknownHostException, IOException
{
Socket socket = new Socket(host, port);
return socket;
}
private void SendMsg(Socket socket,String msg) throws IOException
{
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write(msg.replace("\n", " ")+"\n");
writer.flush();
}
private String ReceiveMsg(Socket socket) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String txt=reader.readLine();
return txt;
}
}
複製代碼
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"
>
<TextView
android:id="@+id/chattxt2"
android:layout_width="319px"
android:layout_height="68px"
android:text="TextView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
>
</TextView>
<EditText
android:id="@+id/chattxt"
android:layout_width="319px"
android:layout_height="52px"
android:text="EditText"
android:textSize="18sp"
android:layout_below="@+id/widget30"
android:layout_alignParentLeft="true"
>
</EditText>
<Button
android:id="@+id/chatOk"
android:layout_width="320px"
android:layout_height="41px"
android:text="Button"
android:layout_below="@+id/widget29"
android:layout_alignParentLeft="true"
>
</Button>
</LinearLayout>
複製代碼
作者:
514217
時間:
2011-7-25 15:01
thxxxxxxxxxxxxxxxxxxxxxxxxxxx
作者:
s90752
時間:
2011-10-10 11:35
我來玩玩看 看好不好用
感謝分享
作者:
wangmingte
時間:
2012-2-27 02:48
感謝分享!
大力的推..............................................
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1