Bạn tham khảo code sau xem, Kevin lấy từ internet chưa có time test thử nhé:
Mã:
// Chat clientimport java.net.*;import java.io.*;import java.util.*;import java.awt.*; class chatClient extends Frame implements Runnable{ Socket soc; TextField tf; TextArea ta; Button btnSend,btnClose; String sendTo; String LoginName; Thread t=null; DataOutputStream dout; DataInputStream din; chatClient(String LoginName,String chatwith) throws Exception { super(LoginName); this.LoginName=LoginName; sendTo=chatwith; tf=new TextField(50); ta=new TextArea(50,50); btnSend=new Button("Send"); btnClose=new Button("Close"); soc=new Socket("127.0.0.1",5217); din=new DataInputStream(soc.getInputStream()); dout=new DataOutputStream(soc.getOutputStream()); dout.writeUTF(LoginName); t=new Thread(this); t.start(); } void setup() { setSize(600,400); setLayout(new GridLayout(2,1)); add(ta); Panel p=new Panel(); p.add(tf); p.add(btnSend); p.add(btnClose); add(p); show(); } public boolean action(Event e,Object o) { if(e.arg.equals("Send")) { try { dout.writeUTF(sendTo + " " + "DATA" + " " + tf.getText().toString()); ta.append("
" + LoginName + " Says:" + tf.getText().toString()); tf.setText(""); } catch(Exception ex) { } } elseif(e.arg.equals("Close")) { try { dout.writeUTF(LoginName + " LOGOUT"); System.exit(1); } catch(Exception ex) { } } return super.action(e,o); } publicstaticvoid main(String args[]) throws Exception { chatClient Client1=new chatClient(args[0],args[1]); Client1.setup(); } publicvoid run() { while(true) { try { ta.append( "
" + sendTo + " Says :" + din.readUTF()); } catch(Exception ex) { ex.printStackTrace(); } } }}
Mã:
// Chat Serverimport java.net.*;import java.util.*;import java.io.*; class chatServer{ static Vector ClientSockets; static Vector LoginNames; chatServer() throws Exception { ServerSocket soc=new ServerSocket(5217); ClientSockets=new Vector(); LoginNames=new Vector(); while(true) { Socket CSoc=soc.accept(); AcceptClient obClient=new AcceptClient(CSoc); } } publicstaticvoid main(String args[]) throws Exception { chatServer ob=new chatServer(); } class AcceptClient extends Thread{ Socket ClientSocket; DataInputStream din; DataOutputStream dout; AcceptClient (Socket CSoc) throws Exception { ClientSocket=CSoc; din=new DataInputStream(ClientSocket.getInputStream()); dout=new DataOutputStream(ClientSocket.getOutputStream()); String LoginName=din.readUTF(); System.out.println("User Logged In :" + LoginName); LoginNames.add(LoginName); ClientSockets.add(ClientSocket); start(); } publicvoid run() { while(true) { try { String msgFromClient=new String(); msgFromClient=din.readUTF(); StringTokenizer st=new StringTokenizer(msgFromClient); String Sendto=st.nextToken(); String MsgType=st.nextToken(); int iCount=0; if(MsgType.equals("LOGOUT")) { for(iCount=0;iCount<LoginNames.size();iCount++) { if(LoginNames.elementAt(iCount).equals(Sendto)) { LoginNames.removeElementAt(iCount); ClientSockets.removeElementAt(iCount); System.out.println("User " + Sendto +" Logged Out ..."); break; } } } else { String msg=""; while(st.hasMoreTokens()) { msg=msg+" " +st.nextToken(); } for(iCount=0;iCount<LoginNames.size();iCount++) { if(LoginNames.elementAt(iCount).equals(Sendto)) { Socket tSoc=(Socket)ClientSockets.elementAt(iCount); DataOutputStream tdout=new DataOutputStream(tSoc.getOutputStream()); tdout.writeUTF(msg); break; } } if(iCount==LoginNames.size()) { dout.writeUTF("I am offline"); } else { } } if(MsgType.equals("LOGOUT")) { break; } } catch(Exception ex) { ex.printStackTrace(); } } }}}
Không chỉ dừng lại ở việc sử dụng nguyên liệu cao cấp, mỗi công trình còn được "chăm sóc" bằng 4 dịch vụ xuất sắc của Tre Nghệ. Từ việc tư vấn, thiết kế đến thi công và hoàn thiện, mọi quy trình đều...
Chất Lượng và Sáng Tạo: Kiến Trúc...