import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class ServerTest {
public static List<Socket> clientList;
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
clientList=new ArrayList<Socket>();
//使服务器一直处于运行状态
ServerSocket server=new ServerSocket(9999);
while(true){
Socket clientSocket = server.accept();
//添加一个客户端
clientList.add(clientSocket);
//开启一个子线程
MyThread myThread=new ServerTest().new MyThread(clientSocket);
myThread.start();
}
}
class MyThread extends Thread{
private Socket sc;
public MyThread(){}
public MyThread(Socket s){
sc=s;
}
@Override
public void run() {
try {
InputStream inputStream = sc.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(inputStream,”utf-8”));
String con;
while((con=br.readLine())!=null){
System.out.println("来自客户端的消息:"+con);
//将接收到的消息发送给每一个连接到的客户端
for(Socket s:clientList){
OutputStream outputStream = s.getOutputStream();
outputStream.write((con+"\r\n").getBytes("utf-8"));
// outputStream.flush();
}
}
br.close();
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
————————————————–package com.example.androidclient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private EditText etContent;
private Socket client;
private OutputStream os;
private TextView tvMsg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etContent = (EditText) findViewById(R.id.etContent);
tvMsg = (TextView) findViewById(R.id.tvMsg);
new Thread(){
String content;
public void run() {
try {
Socket s = new Socket("20.1.5.125",9999);
s.setKeepAlive(true);
if(s.isConnected()){
System.out.println("服务器连接成功..");
}
os = s.getOutputStream();
InputStream is = s.getInputStream();
BufferedReader br = new BufferedReader(
new InputStreamReader(is));
//System.out.println("开始读取服务器的内容 : "+br.readLine());
while((content = br.readLine()) != null){
System.out.println("来自服务器 : "+content);
runOnUiThread(new Runnable() {
@Override
public void run() {
System.out.println("来自服务器 : "+content);
tvMsg.append("张三 : "+content);
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
}
public void btnSendMsg(View v){
String chat = etContent.getText().toString();
if(os != null){
try {
os.write((chat+"\r\n").getBytes());
os.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}