• 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("
    " + 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结构的聊天室。

  • 相关阅读:
    ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍) 【转】
    一个建议,看看大家的意见。
    发现不错的文章,推!
    有个小问题,大家一起研究。
    逼不得已,这个我确实不会,昨办?
    MSN Message6.2 的小BUG
    在IE7浏览器中切换成以资源管理器方式
    手机罗盘(指南针)校准方法
    G13/ Wildfire S/A510e link2SD教程,干净清洁的安装程序到内存卡
    HTC G13电池怎么鉴别真伪
  • 原文地址:https://www.cnblogs.com/dennisac/p/3174866.html
Copyright © 2020-2023  润新知