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(); } } }}}
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...