客户端:
public class TestScoketActivity extends Activity {
/** Called when the activity is first created. */
private Button btn;
private EditText text;
private MyHandler handler;
private TextView content;
private Socket socket = null;
private DataInputStream input = null;
private DataOutputStream out = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button1);
text = (EditText) findViewById(R.id.editText1);
content = (TextView) findViewById(R.id.text);
btn.setOnClickListener(new BtnListener());
handler=new MyHandler();
}
class BtnListener implements OnClickListener {
@Override
public void onClick(View v) {
new MyUserThread().start();
}
}
class MyUserThread extends Thread {
public void run() {
try {
System.out.println("开始聊天");
socket = new Socket("192.168.1.100", 2222);
out = new DataOutputStream(socket.getOutputStream());
input = new DataInputStream(socket.getInputStream());
out.writeUTF(text.getText().toString());
out.flush();
String msg = "";
if ((msg = input.readLine()) != null) {
System.out.println(msg);
Toast.makeText(TestScoketActivity.this, msg, 3000).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
Bundle bundle = msg.getData();
String str = bundle.getString("user");
if (str.equals("")) {
content.setText(str);
}
}
}
服务端
public class Service {
private ServerSocket ss;
private Socket socket;
private DataInputStream input;
private DataOutputStream out;
private String[]msgs;
private Map<String,Object>usersMap=new HashMap<String,Object>();
public Service(){
new ServiceThread().start();
}
//连接服务器
class ServiceThread extends Thread{
public void run(){
try {
ss=new ServerSocket(2222);
System.out.println("服务已开启:");
while(true){
socket=ss.accept();
System.out.println(socket);
input=new DataInputStream(socket.getInputStream());
System.out.println(socket.getInetAddress());
out=new DataOutputStream(socket.getOutputStream());
String msg="";
if((msg=input.readUTF())!=null){
if(!"".equals(msg)){
msgs=msg.trim().split("@#");
usersMap.put(msgs[3], socket);
Iterator<String> userNames=usersMap.keySet().iterator();
while (userNames.hasNext()) {
String userName=userNames.next();
Socket s=(Socket) usersMap.get(userName);
DataOutputStream outMsg=new DataOutputStream(s.getOutputStream());
//outMsg.writeUTF("你好");
outMsg.writeChars("你好----");
System.out.println("发送给:"+msgs[1]);
System.out.println("消息:"+msgs[2]);
System.out.println("发送人"+msgs[3]);
System.out.println("所有人接收:"+msgs[0]);
}
}
}
// out.writeUTF("连接成功");
out.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}