ChatOnline(Socket编程)

Server:

 1 package org.hjw.server;
 2 
 3 import java.io.IOException;
 4 
 5 import java.net.ServerSocket;
 6 import java.net.Socket;
 7 import java.util.ArrayList;
 8 
 9 public class Server {
10 
11     public static ArrayList<Socket> socketList = new ArrayList<Socket>();
12 
13     public static void main(String[] args) throws IOException {
14 
15         ServerSocket ss = new ServerSocket(30000);
16         int i=0;
17         while (true) {
18             Socket s = ss.accept();
19             socketList.add(s);
20             System.out.println("线程:"+i+++"正在运行.");
21             new Thread(new ServerThread(s)).start();
22 
23         }
24     }
25 }

Client:

 1 package org.hjw.chatonline;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 
 6 import java.net.Socket;
 7 
 8 import android.os.Bundle;
 9 import android.os.Handler;
10 import android.os.Message;
11 import android.app.Activity;
12 import android.view.Menu;
13 import android.view.View;
14 import android.view.View.OnClickListener;
15 import android.widget.Button;
16 import android.widget.EditText;
17 import android.widget.TextView;
18 
19 public class MainActivity extends Activity {
20 
21     EditText nickname;
22     EditText input;
23     Button send;
24     TextView show;
25 
26     Handler handler;
27 
28     ClientThread clientThread;
29 
30     @Override
31     protected void onCreate(Bundle savedInstanceState) {
32         super.onCreate(savedInstanceState);
33         setContentView(R.layout.activity_main);
34 
35         nickname = (EditText) findViewById(R.id.nickname);
36         input = (EditText) findViewById(R.id.input);
37         send = (Button) findViewById(R.id.send);
38         show = (TextView) findViewById(R.id.show);
39         handler = new Handler() {;
40             @Override
41             public void handleMessage(Message msg) {
42                 if (msg.what == 0x123) {
43 
44                     show.append("\n" + msg.obj.toString());
45 
46                 }
47             }
48         };
49         clientThread = new ClientThread(handler);
50         new Thread(clientThread).start();
51         send.setOnClickListener(new OnClickListener() {
52 
53             @Override
54             public void onClick(View v) {
55                 try {
56                     Message msg = new Message();
57                     msg.what = 0x345;
58                     msg.obj = nickname.getText().toString() + ":"
59                             + input.getText().toString();
60                     clientThread.revHandler.sendMessage(msg);
61                     input.setText("");
62                 } catch (Exception e) {
63 
64                 }
65             }
66         });
67 
68     }
69 
70     @Override
71     public boolean onCreateOptionsMenu(Menu menu) {
72         // Inflate the menu; this adds items to the action bar if it is present.
73         getMenuInflater().inflate(R.menu.main, menu);
74         return true;
75     }
76 
77 }

ps:1.Client指定IP地址和端口后,建立与Server网络连接,通过Socket建立通信.

  2.Client里有两个Handler ,分别处理服务器传来的消息,回显消息,以及接收UI线程传入的消息,将消息发到服务器.

  3.完成了C/S结构的聊天室。

posted @ 2013-07-06 10:37  谈笑风生膜法师  阅读(1066)  评论(0)    收藏  举报