亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chatparameter.java

?? 這是一些JAVA的源代碼。都是客戶端和服務器端的代碼
?? JAVA
字號:
//聊天室的客戶端 
import java.applet.*; 
import java.awt.*; 
import java.io.*; 
import java.net.*; 
import java.awt.event.*; 
public class ChatClient extends Applet{ 
protected boolean loggedIn;//登入狀態 
protected Frame cp;//聊天室框架 
protected static int PORTNUM=7777; //缺省端口號7777 
protected int port;//實際端口號 
protected Socket sock; 
protected BufferedReader is;//用于從sock讀取數據的BufferedReader 
protected PrintWriter pw;//用于向sock寫入數據的PrintWriter 
protected TextField tf;//用于輸入的TextField 
protected TextArea ta;//用于顯示對話的TextArea 
protected Button lib;//登入按鈕 
protected Button lob;//登出的按鈕 
final static String TITLE ="Chatroom applet>>>>>>>>>>>>>>>>>>>>>>>>"; 
protected String paintMessage;//發表的消息 
public ChatParameter Chat; 
public void init(){ 
paintMessage="正在生成聊天窗口"; 
repaint(); 
cp=new Frame(TITLE); 
cp.setLayout(new BorderLayout()); 
String portNum=getParameter("port");//呢個參數勿太明 
port=PORTNUM; 
if (portNum!=null) //書上是portNum==null,十分有問題 
port=Integer.parseInt(portNum); 
//CGI 
ta=new TextArea(14,80); 
ta.setEditable(false);//read only attribute 
ta.setFont(new Font("Monospaced",Font.PLAIN,11)); 
cp.add(BorderLayout.NORTH,ta); 
Panel p=new Panel(); 
Button b; 
//for login button 
p.add(lib=new Button("Login")); 
lib.setEnabled(true); 
lib.requestFocus(); 
lib.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e){ 
login(); 
lib.setEnabled(false); 
lob.setEnabled(true); 
tf.requestFocus();//將鍵盤輸入鎖定再右邊的文本框中 
} 
}); 
//for logout button 
p.add(lob=new Button ("Logout")); 
lob.setEnabled(false); 
lob.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent e){ 
logout(); 
lib.setEnabled(true); 
lob.setEnabled(false); 
lib.requestFocus(); 
} 
}); 
p.add(new Label ("輸入消息:")); 
tf=new TextField(40); 
tf.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent e){ 
if(loggedIn){ 
//pw.println(Chat.CMD_BCAST+tf.getText());//Chat.CMD....是咩野來? 
int j=tf.getText().indexOf(":"); 
if(j>0) pw.println(Chat.CMD_MESG+tf.getText()); 
else 
pw.println(Chat.CMD_BCAST+tf.getText()); 
tf.setText("");//勿使用flush()? 
} 
} 
}); 
p.add(tf); 
cp.add(BorderLayout.SOUTH,p); 
cp.addWindowListener(new WindowAdapter(){ 
public void windowClosing(WindowEvent e){ 
//如果執行了setVisible或者dispose,關閉窗口 
ChatClient.this.cp.setVisible(false); 
ChatClient.this.cp.dispose(); 
logout(); 
} 
}); 
cp.pack();//勿明白有咩用? 
//將Frame cp放在中間 
Dimension us=cp.getSize(), 
them=Toolkit.getDefaultToolkit().getScreenSize(); 
int newX=(them.width-us.width)/2; 
int newY=(them.height-us.height)/2; 
cp.setLocation(newX,newY); 
cp.setVisible(true); 
paintMessage="Window should now be visible"; 
repaint(); 
} 
//登錄聊天室 
public void login(){ 
if(loggedIn) return; 
try{ 
sock=new Socket(getCodeBase().getHost(),port); 
is=new BufferedReader(new InputStreamReader(sock.getInputStream())); 
pw=new PrintWriter(sock.getOutputStream(),true); 
}catch(IOException e){ 
showStatus("Can't get socket: "+e); 
cp.add(new Label("Can't get socket: "+e)); 
return;} 
//構造并且啟動讀入器,從服務器讀取數據,輸出到文本框中 
//這里,長成一個線程來避免鎖住資源(lockups) 
new Thread (new Runnable(){ 
public void run(){ 
String line; 
try{ 
while(loggedIn &&((line=is.readLine())!=null)) 
ta.appendText(line+"\n"); 
}catch(IOException e){ 
showStatus("我的天啊,掉線了也!!!!"); 
return; 
} 
} 
}).start(); 
//假定登錄(其實只是打印相關信息,并沒有真正登錄) 
// pw.println(Chat.CMD_LOGIN+"AppletUser"); 
pw.println(Chat.CMD_LOGIN+"AppletUser"); 
loggedIn =true; 

} 
//模仿退出的代碼 
public void logout(){ 
if(!loggedIn) 
return; 
loggedIn=false; 
try{ 
if(sock!=null) 
sock.close(); 
}catch(IOException ign){ 
// 異常處理哦 
} 
} 
//沒有設置stop的方法,即使從瀏覽器跳到另外一個網頁的時候 
//聊天程序還可以繼續運行 
public void paint(Graphics g){ 
Dimension d=getSize(); 
int h=d.height; 
int w=d.width; 
g.fillRect(0,0,w,2); 
g.setColor(Color.black); 
g.drawString(paintMessage,10,(h/2)-5); 
} 
} 



聊天室服務器端 
import java.net.*; 
import java.io.*; 
import java.util.*; 

public class ChatServer{ 
//聊天室管理員ID 
protected final static String CHATMASTER_ID="ChatMaster"; 
//系統信息的分隔符 
protected final static String SEP=": "; 
//服務器的Socket 
protected ServerSocket servSock; 
//當前客戶端列表 
protected ArrayList clients; 
//調試標記 
protected boolean DEBUG=false; 
public ChatParameter Chat; 

//主方法構造一個ChatServer,沒有返回值 
public static void main(String[] argv){ 
System.out.println("Chat server0.1 starting>>>>>>>>>>>>>>>>"); 
ChatServer w=new ChatServer(); 
w.runServer(); 
System.out.println("***ERROR*** Chat server0.1 quitting"); 

} 


//構造和運行一個聊天服務 
ChatServer(){ 
Chat=new ChatParameter(); 
clients=new ArrayList(); 
try{ 
servSock=new ServerSocket(7777);//實有問題拉,不過可能是他自己定義既一個class. 
System.out.println("Chat Server0.1 listening on port:"+7777); 
}catch(Exception e){ 
log("IO Exception in ChatServer.<init>"); 
System.exit(0); 
} 
} 

public void runServer(){ 
try{ 
while(true){ 
Socket us=servSock.accept(); 
String hostName=us.getInetAddress().getHostName(); 
System.out.println("Accpeted from "+hostName); 
//一個處理的線程 
ChatHandler cl=new ChatHandler(us,hostName); 
synchronized(clients){ 
clients.add(cl); 
cl.start(); 
if(clients.size()==1) 
cl.send(CHATMASTER_ID,"Welcome!You are the first one here"); 
else{ 
cl.send(CHATMASTER_ID,"Welcome!You are the latest of"+ 
clients.size()+" users."); 
} 
} 
} 
}catch(Exception e){ 
log("IO Exception in runServer:"+e); 
System.exit(0); 
} 
} 


protected void log(String s){ 
System.out.println(s); 
} 


//處理會話的內部的類 
protected class ChatHandler extends Thread { 
//客戶端scoket 
protected Socket clientSock; 
//讀取socket的BufferedReader 
protected BufferedReader is ; 
//在socket 上發送信息行的PrintWriter 
protected PrintWriter pw; 
//客戶端出主機 
protected String clientIP; 
//句柄 
protected String login; 

public ChatHandler (Socket sock,String clnt)throws IOException { 
clientSock=sock; 
clientIP=clnt; 
is=new BufferedReader( 
new InputStreamReader(sock.getInputStream())); 
pw=new PrintWriter (sock.getOutputStream(),true); 

} 

//每一個ChatHandler是一個線程,下面的是他的run()方法 
//用于處理會話 
public void run(){ 
String line; 

try{ 
while((line=is.readLine())!=null){ 
char c=line.charAt(0);//我頂你老母啊 ,果只Chat.CMD咩xx冇定義 撲啊///!!! 
line=line.substring(1); 
switch(c){ 
//case Chat.CMD_LOGIN: 
case 'l': 
if(!Chat.isValidLoginName(line)){ 
send(CHATMASTER_ID,"LOGIN"+line+"invalid"); 
log("LOGIN INVALID from:"+clientIP); 
continue; 
} 

login=line; 
broadcast(CHATMASTER_ID,login+" joins us,for a total of"+ 
clients.size()+" users"); 
break; 

// case Chat.CMD_MESG: 
case 'm': 
if(login==null){ 
send(CHATMASTER_ID,"please login first"); 
continue; 
} 

int where =line.indexOf(Chat.SEPARATOR); 
String recip=line.substring(0,where); 
String mesg=line.substring (where+1); 
log("MESG: "+login+"--->"+recip+": "+mesg); 
ChatHandler cl=lookup(recip); 
if(cl==null) 
psend(CHATMASTER_ID,recip+"not logged in."); 
else 
cl.psend(login,mesg); 

break; 


//case Chat.CMD_QUIT: 
case 'q': 
broadcast(CHATMASTER_ID,"Goodbye to "+login+"@"+clientIP); 
close(); 
return;//ChatHandler結束 


// case Chat.CMD_BCAST: 
case 'b': 
if(login!=null) 
broadcast(login,line); 
else 
log("B<L FROM"+clientIP); 
break; 

default: 
log("Unknow cmd"+c+"from"+login+"@"+clientIP); 
} 
} 
}catch(IOException e){ 
log("IO Exception :"+e); 
}finally{ 
//sock 結束,我們完成了 
//還不能發送再見的消息 
//得有簡單的基于命令的協議才行 
System.out.println(login+SEP+"All Done"); 
synchronized(clients){ 
clients.remove(this); 
if(clients.size()==0){ 
System.out.println(CHATMASTER_ID+SEP+ 
"I'm so lonely I could cry>>>>>"); 
}else if(clients.size()==1){ 
ChatHandler last=(ChatHandler)clients.get(0); 
last.send(CHATMASTER_ID,"Hey,you are talking to yourself again"); 
} 
else{ 
broadcast(CHATMASTER_ID,"There are now"+clients.size()+" users"); 
} 
} 
} 
} 
protected void close(){ 
if(clientSock==null){ 
log("close when not open"); 
return; 
} 
try{ 
clientSock.close(); 
clientSock=null; 
}catch(IOException e){ 
log("Failure during close to "+clientIP); 
} 
} 
//發送一條消息給用戶 
public void send(String sender,String mesg){ 
pw.println(sender+SEP+"*>"+mesg); 
} 
//發送私有的消息 
protected void psend(String sender ,String msg){ 
send("<*"+sender+"*>",msg); 
} 
//發送一條消息給所有的用戶 
public void broadcast (String sender,String mesg){ 
System.out.println("Broadcasting"+sender+SEP+mesg); 
for(int i=0;i<clients.size();i++){ 
ChatHandler sib=(ChatHandler)clients.get(i); 
if(DEBUG) 
System.out.println("Sending to"+sib); 
sib.send(sender,mesg); 
} 
if(DEBUG) System.out.println("Done broadcast"); 
} 
protected ChatHandler lookup(String nick){ 
synchronized(clients){ 
for(int i=0;i<clients.size();i++){ 
ChatHandler cl=(ChatHandler)clients.get(i); 
if(cl.login.equals(nick)) 
return cl; 
} 
} 
return null; 
} 
//將ChatHandler對象轉換成一個字符串 
public String toString(){ 
return "ChatHandler["+login+"]"; 
} 
} 
} 



public class ChatParameter { 
public static final char CMD_BCAST='b'; 
public static final char CMD_LOGIN='l'; 
public static final char CMD_MESG='m'; 
public static final char CMD_QUIT='q'; 
public static final char SEPARATOR=':';//????? 
public static final int PORTNUM=7777; 
public boolean isValidLoginName(String line){ 
if (line.equals("CHATMASTER_ID")) 
return false; 
return true; 
} 
public void main(String[] argv){ 
} 
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看日本一区| 国产成人精品综合在线观看 | 综合激情成人伊人| 欧美性xxxxxxxx| 精品一区在线看| 亚洲少妇中出一区| 国产精品看片你懂得 | 丝袜美腿亚洲色图| 国产精品国产a| **欧美大码日韩| 精品少妇一区二区三区免费观看| av不卡在线播放| 精品一区精品二区高清| 国产一区 二区| 日韩激情一二三区| 国模冰冰炮一区二区| 水野朝阳av一区二区三区| 天堂久久一区二区三区| 青青国产91久久久久久| 一区二区三区高清在线| 国产精品美女久久久久久久网站| 欧美在线色视频| 制服丝袜激情欧洲亚洲| 在线观看免费亚洲| 4438x成人网最大色成网站| 亚洲精品一区二区三区福利| 91精品国产色综合久久| 欧美三级韩国三级日本三斤| 色综合一个色综合亚洲| 成人h精品动漫一区二区三区| 韩国午夜理伦三级不卡影院| 99国产麻豆精品| 不卡电影一区二区三区| 69av一区二区三区| 国产精品视频看| 丝袜亚洲另类丝袜在线| 成人av综合在线| 日韩欧美中文字幕制服| 91精品国产日韩91久久久久久| 久久色在线视频| 久久影院午夜论| 亚洲综合丁香婷婷六月香| 亚洲国产精品自拍| 调教+趴+乳夹+国产+精品| 日韩一区精品视频| 92国产精品观看| 欧美精品一区二区精品网| 亚洲伊人色欲综合网| 国产成人精品综合在线观看 | 韩国一区二区三区| 欧美日免费三级在线| 国产精品欧美一区二区三区| 日韩国产精品久久久| 喷水一区二区三区| 91天堂素人约啪| 在线日韩av片| 中文字幕欧美日韩一区| 国产精品你懂的在线欣赏| 天堂资源在线中文精品| 日本久久精品电影| 欧美精品色一区二区三区| 日韩视频一区二区在线观看| 一区二区视频在线| 亚洲一区国产视频| 91一区一区三区| 国产精品每日更新| 国产成人av电影在线观看| 国产精一区二区三区| 91久久线看在观草草青青| 国产精品午夜免费| 国产精品66部| 久久久精品人体av艺术| 亚洲一区视频在线| 91官网在线免费观看| 亚洲欧美一区二区三区孕妇| 日韩高清在线一区| 欧美精品99久久久**| 午夜久久久久久电影| 欧美伦理视频网站| 天天影视涩香欲综合网| 欧美高清dvd| 青草av.久久免费一区| 欧美一区二区三区免费大片| 日韩国产精品久久久| 日韩美女视频在线| 一区二区三区在线观看欧美| 欧美色图第一页| 偷拍一区二区三区四区| 欧美一区二区三区视频在线| 麻豆成人久久精品二区三区小说| jlzzjlzz亚洲女人18| 亚洲三级理论片| 欧美又粗又大又爽| 美女视频黄免费的久久| 久久一二三国产| 成人动漫视频在线| 亚洲二区视频在线| 精品国产乱码久久久久久免费| 国产一区二区在线视频| 亚洲丝袜另类动漫二区| 欧美电影影音先锋| 黄色精品一二区| 亚洲人快播电影网| 欧美一级免费观看| 成人一区二区视频| 国产人伦精品一区二区| 精品一二三四区| 91精品欧美综合在线观看最新| 国产东北露脸精品视频| 在线播放91灌醉迷j高跟美女| 麻豆精品一区二区三区| 中文字幕乱码久久午夜不卡| 欧美日韩免费观看一区三区| 国内不卡的二区三区中文字幕| 亚洲同性同志一二三专区| 91精品国产福利| av激情综合网| 久久成人免费日本黄色| 69堂精品视频| 99久久综合狠狠综合久久| 日韩av成人高清| 亚洲欧洲国产专区| 精品久久久久久久人人人人传媒 | 中文字幕精品一区二区三区精品| 91国偷自产一区二区开放时间 | 亚洲成人动漫在线观看| 欧美三级午夜理伦三级中视频| 免费看黄色91| 亚洲男女一区二区三区| 久久一区二区三区四区| 欧美挠脚心视频网站| 麻豆精品久久久| 樱花草国产18久久久久| 久久精品人人做| 色综合色狠狠综合色| 亚洲国产毛片aaaaa无费看| 欧美激情一区二区在线| 日韩欧美激情四射| 欧美精品少妇一区二区三区| 色偷偷88欧美精品久久久| 成人免费毛片片v| 久久爱www久久做| 蜜臀久久久99精品久久久久久| 亚洲在线视频免费观看| ...av二区三区久久精品| 欧美极品少妇xxxxⅹ高跟鞋| 久久影视一区二区| 精品国产免费久久| 欧美一级高清片| 欧美日韩精品福利| 欧美三级电影网站| 欧美三区免费完整视频在线观看| 一本色道亚洲精品aⅴ| 91福利在线免费观看| 色悠悠亚洲一区二区| 91国偷自产一区二区开放时间| 在线视频你懂得一区| 欧美日免费三级在线| 欧美美女一区二区三区| 欧美日韩一区二区三区不卡| 欧美一a一片一级一片| 欧美日韩一区二区在线观看视频| 欧美午夜一区二区三区| 欧美欧美欧美欧美首页| 日韩欧美一区二区免费| 精品成人一区二区三区四区| 久久先锋影音av鲁色资源网| 国产日韩精品久久久| 中文字幕亚洲不卡| 亚洲在线视频一区| 精品一区二区三区视频| 国产91丝袜在线18| 99国产精品视频免费观看| 在线区一区二视频| 日韩视频在线永久播放| 日本一区二区不卡视频| 一区二区免费在线播放| 欧美aaa在线| www.成人网.com| 欧美高清精品3d| 欧美激情一二三区| 亚洲精品乱码久久久久久日本蜜臀| 夜夜嗨av一区二区三区四季av| 日韩国产精品91| a美女胸又www黄视频久久| 欧美麻豆精品久久久久久| 国产亚洲欧美一级| 亚洲成人tv网| 大尺度一区二区| 欧美剧情电影在线观看完整版免费励志电影 | 欧美日韩另类一区| 久久亚洲一区二区三区明星换脸| 国产欧美一区二区精品忘忧草| 一区二区免费在线播放| 蓝色福利精品导航| 欧美日韩一区高清| 国产精品国产三级国产有无不卡| 亚洲va国产天堂va久久en| 成人午夜大片免费观看| 91精品国产91热久久久做人人|