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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? chessserver.java

?? ChessWZQ1.0 采用C/S模式編寫(xiě) 客戶端和服務(wù)器端的交互有class Message中定義
?? JAVA
字號(hào):
import java.io.*;
import java.net.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
class MessageServer extends Panel //implements ActionListener
{
TextArea messageBoard=new TextArea("",22,50,TextArea.SCROLLBARS_VERTICAL_ONLY);
Label statusLabel=new Label("當(dāng)前連接數(shù):",Label.LEFT);
Panel boardPanel=new Panel();
Panel statusPanel=new Panel();
MessageServer()
{
setSize(350,300);
setBackground(Color.green);
setLayout(new BorderLayout());
boardPanel.setLayout(new FlowLayout());
boardPanel.setSize(210,210);
statusPanel.setLayout(new BorderLayout());
statusPanel.setSize(210,50);
boardPanel.add(messageBoard);
statusPanel.add(statusLabel,BorderLayout.WEST);
add(boardPanel,BorderLayout.CENTER);
add(statusPanel,BorderLayout.NORTH);
}
}
/*
class ServerThread extends Thread
{
Socket clientSocket;
Hashtable clientDataHash;
Hashtable clientNameHash;
Hashtable chessPeerHash;
MessageServer server;

boolean isClientClosed=false;

ServerThread(Socket clientSocket,Hashtable clientDataHash,Hashtable clientNameHash,Hashtable chessPeerHash,MessageServer server)
{
this.clientSocket=clientSocket;
this.clientDataHash=clientDataHash;
this.clientNameHash=clientNameHash;
this.chessPeerHash=chessPeerHash;
this.server=server;
}
public void messageTransfer(String message)
{
String clientName,peerName;

if(message.startsWith("/"))
{

if(message.startsWith("/changename "))
{
clientName=message.substring(12);
if( clientName.length()<=0 || clientName.length()>20 ||
clientName.startsWith("/") || clientNameHash.containsValue(clientName) ||
clientName.startsWith("changename")|| clientName.startsWith("list") ||
clientName.startsWith("[inchess]") || clientName.startsWith("creatgame") ||
clientName.startsWith("joingame") || clientName.startsWith("yourname") ||
clientName.startsWith("userlist") || clientName.startsWith("chess") ||
clientName.startsWith("OK") || clientName.startsWith("reject") ||
clientName.startsWith("peer") || clientName.startsWith("peername") ||
clientName.startsWith("giveup") || clientName.startsWith("youwin") ||
clientName.startsWith("所有人"))
{
message="無(wú)效命令";
Feedback(message);
}
else
{
if(clientNameHash.containsValue(("[inchess]"+(String)clientNameHash.get(clientSocket))))
{
synchronized(clientNameHash)
{
clientNameHash.put((Socket)getHashKey(clientNameHash,("[inchess]"+clientNameHash.get(clientSocket))),
("[inchess]"+clientName));
chessPeerTalk(("[inchess]"+clientName),("/yourname "+("[inchess]"+clientName)));
}
}
else if(chessPeerHash.containsKey(clientNameHash.get(clientSocket)))
{
//游戲客戶端改名字
synchronized(clientNameHash)
{
clientNameHash.put((Socket)getHashKey(clientNameHash,("[inchess]"+clientNameHash.get(clientSocket))),
("[inchess]"+clientName));
}

synchronized(chessPeerHash)
{
//chessPeerHash添加新名字映射
chessPeerHash.put(clientName,chessPeerHash.get(clientNameHash.get(clientSocket)));
//chessPeerHash刪除舊映射
chessPeerHash.remove(clientNameHash.get(clientSocket));
}
//向游戲客戶端發(fā)送新名字
chessPeerTalk(("[inchess]"+clientName),("/yourname "+("[inchess]"+clientName)));
//向peer游戲客戶端發(fā)送
chessPeerTalk((String)chessPeerHash.get(clientName),("/peer "+"[inchess]"+clientName));

}
else if(chessPeerHash.containsValue(clientNameHash.get(clientSocket)))
{
synchronized(clientNameHash)
{
//游戲客戶端改名字
clientNameHash.put((Socket)getHashKey(clientNameHash,("[inchess]"+clientNameHash.get(clientSocket))),
("[inchess]"+clientName));
}
synchronized(chessPeerHash)
{
//chessPeerHash重新映射
chessPeerHash.put((String)getHashKey(chessPeerHash,clientNameHash.get(clientSocket)),clientName);
//向游戲客戶端發(fā)送新名字
chessPeerTalk(("[inchess]"+clientName),("/yourname "+("[inchess]"+clientName)));
}
//向peer游戲客戶端發(fā)送
chessPeerTalk((String)getHashKey(chessPeerHash,clientName),("/peer "+"[inchess]"+clientName));

}

message=clientNameHash.get(clientSocket)+"改名為:"+clientName;
synchronized(clientNameHash)
{
clientNameHash.put(clientSocket,clientName);
}
publicTalk(message);
Feedback("/yourname "+(String)clientNameHash.get(clientSocket));
publicTalk(getUserList());

}

}
else if(message.equals("/list"))
{
Feedback(getUserList());
}
else if(message.startsWith("/creatgame [inchess]"))
{
String chessServerName=message.substring(20);
synchronized(clientNameHash)
{
clientNameHash.put(clientSocket,message.substring(11));
}
synchronized(chessPeerHash)
{
chessPeerHash.put(chessServerName,"wait");
}
Feedback("/yourname "+clientNameHash.get(clientSocket));
chessPeerTalk(chessServerName,"/OK");
publicTalk(getUserList());
}
else if(message.startsWith("/joingame "))
{
StringTokenizer userToken=new StringTokenizer(message," ");
String getUserToken,serverName,selfName;
String[] chessNameOpt={"0","0"};
int getOptNum=0;

while(userToken.hasMoreTokens())
{
getUserToken=(String)userToken.nextToken(" ");
if(getOptNum>=1 && getOptNum<=2)
{
chessNameOpt[getOptNum-1]=getUserToken;
}
getOptNum++;
}
serverName=chessNameOpt[0];
selfName=chessNameOpt[1];

if(chessPeerHash.containsKey(serverName) && chessPeerHash.get(serverName).equals("wait"))
{
synchronized(clientNameHash)
{
clientNameHash.put(clientSocket,("[inchess]"+selfName));
}
synchronized(chessPeerHash)
{
chessPeerHash.put(serverName,selfName);
}
publicTalk(getUserList());
chessPeerTalk(selfName,("/peer "+"[inchess]"+serverName));
chessPeerTalk(serverName,("/peer "+"[inchess]"+selfName));
}
else
{
chessPeerTalk(selfName,"/reject");
try
{
clientClose();
}
catch(Exception ez)
{
}
}
}
else if(message.startsWith("/[inchess]"))
{
int firstLocation=0,lastLocation;

lastLocation=message.indexOf(" ",0);

peerName=message.substring((firstLocation+1),lastLocation);
message=message.substring((lastLocation+1));
if(chessPeerTalk(peerName,message))
{
Feedback("/error");
}
}
else if(message.startsWith("/giveup "))
{
String chessClientName=message.substring(8);
if(chessPeerHash.containsKey(chessClientName) && !((String)chessPeerHash.get(chessClientName)).equals("wait"))
{
chessPeerTalk((String)chessPeerHash.get(chessClientName),"/youwin");
synchronized(chessPeerHash)
{
chessPeerHash.remove(chessClientName);
}
}
if(chessPeerHash.containsValue(chessClientName))
{
chessPeerTalk((String)getHashKey(chessPeerHash,chessClientName),"/youwin");
synchronized(chessPeerHash)
{
chessPeerHash.remove((String)getHashKey(chessPeerHash,chessClientName));
}
}
}
else
{
int firstLocation=0,lastLocation;

lastLocation=message.indexOf(" ",0);
if(lastLocation==-1)
{
Feedback("無(wú)效命令");
return;
}
else
{
peerName=message.substring((firstLocation+1),lastLocation);
message=message.substring((lastLocation+1));
message=(String)clientNameHash.get(clientSocket)+">"+message;
if(peerTalk(peerName,message))
{
Feedback("沒(méi)有這個(gè)用戶:"+peerName+"\n");
}
}

}

}

else
{
message=clientNameHash.get(clientSocket)+">"+message;
server.messageBoard.append(message+"\n");
publicTalk(message);
server.messageBoard.setCaretPosition(server.messageBoard.getText().length());
}
}
public void publicTalk(String publicTalkMessage)
{

synchronized(clientDataHash)
{
for(Enumeration enu=clientDataHash.elements();enu.hasMoreElements();)
{
DataOutputStream outData=(DataOutputStream)enu.nextElement();
try
{
outData.writeUTF(publicTalkMessage);
}
catch(IOException es)
{
es.printStackTrace();
}
}
}
}
public boolean peerTalk(String peerTalk,String talkMessage)
{
for(Enumeration enu=clientDataHash.keys();enu.hasMoreElements();)
{
Socket userClient=(Socket)enu.nextElement();
if(peerTalk.equals((String)clientNameHash.get(userClient)) && !peerTalk.equals((String)clientNameHash.get(clientSocket)))
{
synchronized(clientDataHash)
{
DataOutputStream peerOutData=(DataOutputStream)clientDataHash.get(userClient);
try
{
peerOutData.writeUTF(talkMessage);
}
catch(IOException es)
{
es.printStackTrace();
}
}
Feedback(talkMessage);
return(false);
}
else if(peerTalk.equals((String)clientNameHash.get(clientSocket)))
{
Feedback(talkMessage);
return(false);
}
}
return(true);
}
public boolean chessPeerTalk(String chessPeerTalk,String chessTalkMessage)
{
for(Enumeration enu=clientDataHash.keys();enu.hasMoreElements();)
{
Socket userClient=(Socket)enu.nextElement();

if(chessPeerTalk.equals((String)clientNameHash.get(userClient)) && !chessPeerTalk.equals((String)clientNameHash.get(clientSocket)))
{
synchronized(clientDataHash)
{
DataOutputStream peerOutData=(DataOutputStream)clientDataHash.get(userClient);
try
{
peerOutData.writeUTF(chessTalkMessage);
}
catch(IOException es)
{
es.printStackTrace();
}
}
return(false);
}
}
return(true);
}
public void Feedback(String feedbackString)
{
synchronized(clientDataHash)
{
DataOutputStream outData=(DataOutputStream)clientDataHash.get(clientSocket);
try
{
outData.writeUTF(feedbackString);
}
catch(Exception eb)
{
eb.printStackTrace();
}
}
}



public String getUserList()
{
String userList="/userlist";

for(Enumeration enu=clientNameHash.elements();enu.hasMoreElements();)
{
userList=userList+" "+(String)enu.nextElement();
}
return(userList);
}


public Object getHashKey(Hashtable targetHash,Object hashValue)
{
Object hashKey;
for(Enumeration enu=targetHash.keys();enu.hasMoreElements();)
{
hashKey=(Object)enu.nextElement();
if(hashValue.equals((Object)targetHash.get(hashKey)))
return(hashKey);
}
return(null);
}

public void firstCome()
{
publicTalk(getUserList());
Feedback("/yourname "+(String)clientNameHash.get(clientSocket));
Feedback("Java五子棋聊天客戶端");
Feedback("/changename <你的名字> --更改名字");
Feedback("/list --更新用戶列表");
Feedback("/<用戶名> <要說(shuō)的話> --私聊");
Feedback("注意:用命令的時(shí)候,先把談話的對(duì)象定為所有人");
}



public void clientClose()
{
server.messageBoard.append("用戶斷開(kāi):"+clientSocket+"\n");
//如果是游戲客戶端主機(jī)
synchronized(chessPeerHash)
{
if(chessPeerHash.containsKey(clientNameHash.get(clientSocket)))
{
chessPeerHash.remove((String)clientNameHash.get(clientSocket));
}
if(chessPeerHash.containsValue(clientNameHash.get(clientSocket)))
{
chessPeerHash.put((String)getHashKey(chessPeerHash,(String)clientNameHash.get(clientSocket)),"tobeclosed");
}
}
synchronized(clientDataHash)
{
clientDataHash.remove(clientSocket);
}
synchronized(clientNameHash)
{
clientNameHash.remove(clientSocket);
}
publicTalk(getUserList());
server.statusLabel.setText("當(dāng)前連接數(shù):"+clientDataHash.size());
try
{
clientSocket.close();
}
catch(IOException exx)
{
}

isClientClosed=true;

}


public void run()
{
DataInputStream inData;
synchronized(clientDataHash)
{
server.statusLabel.setText("當(dāng)前連接數(shù):"+clientDataHash.size());
}
try
{
inData=new DataInputStream(clientSocket.getInputStream());
firstCome();
while(true)
{
String message=inData.readUTF();
messageTransfer(message);
}
}
catch(IOException esx)
{
}
finally
{
if(!isClientClosed)
{
clientClose();
}
}
}


}*/






public class chessServer extends Frame implements ActionListener
{

Button messageClearButton=new Button("清除顯示");
Button serverStatusButton=new Button("服務(wù)器狀態(tài)");
Button serverOffButton=new Button("關(guān)閉服務(wù)器");
Panel buttonPanel=new Panel();

MessageServer server=new MessageServer();
ServerSocket serverSocket;
Hashtable clientDataHash=new Hashtable(50);
Hashtable clientNameHash=new Hashtable(50);
Hashtable chessPeerHash=new Hashtable(50);

chessServer()
{
super("Java五子棋服務(wù)器");
setBackground(Color.green);


buttonPanel.setLayout(new FlowLayout());
messageClearButton.setSize(60,25);
buttonPanel.add(messageClearButton);
messageClearButton.addActionListener(this);
serverStatusButton.setSize(75,25);
buttonPanel.add(serverStatusButton);
serverStatusButton.addActionListener(this);
serverOffButton.setSize(75,25);
buttonPanel.add(serverOffButton);
serverOffButton.addActionListener(this);

add(server,BorderLayout.CENTER);
add(buttonPanel,BorderLayout.SOUTH);

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
pack();
setVisible(true);
setSize(400,450);
setResizable(false);
validate();
try
{
makeMessageServer(4331,server);
}
catch(Exception e)
{
System.out.println("e");
}
}

public void makeMessageServer(int port,MessageServer server) throws IOException
{
Socket clientSocket;
long clientAccessNumber=1;
this.server=server;

try
{
serverSocket=new ServerSocket(port);
server.messageBoard.setText("服務(wù)器開(kāi)始于:"+serverSocket.getInetAddress().getLocalHost()+":"+serverSocket.getLocalPort()+"\n");

while(true)
{
clientSocket=serverSocket.accept();
server.messageBoard.append("用戶連接:"+clientSocket+"\n");

DataOutputStream outData=new DataOutputStream(clientSocket.getOutputStream());

clientDataHash.put(clientSocket,outData);
clientNameHash.put(clientSocket,("新來(lái)客"+clientAccessNumber++));

ServerThread thread=new ServerThread(clientSocket,clientDataHash,clientNameHash,chessPeerHash,server);

thread.start();
}
}
catch(IOException ex)
{
System.out.println("已經(jīng)有服務(wù)器在運(yùn)行. \n");
}


}

public void actionPerformed(ActionEvent e)
{
if(e.getSource()==messageClearButton)
{
server.messageBoard.setText("");
}
if(e.getSource()==serverStatusButton)
{
try
{
server.messageBoard.append("服務(wù)器信息:"+serverSocket.getInetAddress().getLocalHost()+":"+serverSocket.getLocalPort()+"\n");
}
catch(Exception ee)
{
System.out.println("serverSocket.getInetAddress().getLocalHost() error \n");
}
}
if(e.getSource()==serverOffButton)
{
System.exit(0);
}
}

public static void main(String args[])
{
chessServer chessServer=new chessServer();
}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线国产福利| 国产亚洲人成网站| 欧美亚洲一区二区三区四区| 成人免费视频免费观看| 国产一区二区三区视频在线播放| 日韩在线a电影| 亚洲成人黄色影院| 亚洲成av人片在线观看| 香蕉乱码成人久久天堂爱免费| 亚洲男人的天堂网| 亚洲综合丁香婷婷六月香| 伊人夜夜躁av伊人久久| 亚洲永久免费av| 亚洲国产精品久久久久婷婷884| 亚洲午夜av在线| 99热精品国产| 91网站在线观看视频| 91丨九色丨黑人外教| 97精品久久久久中文字幕| 色悠悠久久综合| 欧洲精品视频在线观看| 欧美片在线播放| 欧美一区二区三区喷汁尤物| 精品三级在线观看| 国产亚洲欧美一区在线观看| 国产精品色一区二区三区| 自拍偷拍国产亚洲| 亚洲高清免费视频| 麻豆国产精品视频| 国产成人aaa| 色呦呦国产精品| 欧美裸体bbwbbwbbw| 精品av久久707| 中文字幕av一区二区三区| 亚洲欧美一区二区三区孕妇| 亚洲成人高清在线| 加勒比av一区二区| 99久久er热在这里只有精品15| 色狠狠色噜噜噜综合网| 91精品国产高清一区二区三区蜜臀| 日韩欧美成人一区| 国产精品美女久久久久久2018| 亚洲免费观看高清| 麻豆精品在线播放| 成人av午夜电影| 欧美日韩1区2区| 久久综合色综合88| 一区二区三区精品在线| 日韩va欧美va亚洲va久久| 国产成人av影院| 欧美日韩中文精品| 久久久精品综合| 亚洲一区中文在线| 国产一区欧美二区| 欧美日韩一区中文字幕| 久久综合999| 一区二区三区精品| 国产精品一区二区果冻传媒| 在线观看av一区| 国产喂奶挤奶一区二区三区| 一级日本不卡的影视| 国产原创一区二区| 欧美亚洲高清一区| 久久aⅴ国产欧美74aaa| 91伊人久久大香线蕉| 欧美成人综合网站| 一区二区三区.www| 风间由美一区二区三区在线观看| 欧美日韩在线三级| 国产精品麻豆网站| 极品少妇xxxx精品少妇| 欧洲一区二区av| 欧美高清一级片在线观看| 奇米一区二区三区| 色综合天天狠狠| 国产欧美日韩久久| 久久精品国产秦先生| 欧美日韩精品二区第二页| 中文字幕欧美一| 国产福利一区二区三区视频 | 久久国产人妖系列| 在线观看av不卡| 中文字幕日韩av资源站| 国产在线精品免费| 欧美日韩dvd在线观看| 一区二区三区日韩| 91日韩在线专区| 国产精品理伦片| 国产精品一区专区| 精品国产乱码久久久久久久久| 婷婷综合五月天| 欧美亚洲一区二区三区四区| 日韩伦理av电影| 99久久久免费精品国产一区二区 | 婷婷综合另类小说色区| 91高清视频在线| 亚洲欧美一区二区久久| 成人福利视频在线| 国产片一区二区三区| 国产自产2019最新不卡| 日韩欧美电影在线| 久草在线在线精品观看| 日韩欧美专区在线| 蜜臀av一级做a爰片久久| 欧美一卡二卡在线| 免费在线观看一区| 日韩免费一区二区| 久久成人麻豆午夜电影| 日韩免费电影一区| 激情欧美一区二区| 久久女同性恋中文字幕| 国产一区二区三区高清播放| 久久精品亚洲精品国产欧美| 国产呦精品一区二区三区网站| 精品欧美一区二区久久 | 国产v综合v亚洲欧| 国产精品色哟哟| 91免费看`日韩一区二区| 亚洲激情网站免费观看| 欧洲精品在线观看| 日韩中文字幕区一区有砖一区| 亚洲国产aⅴ天堂久久| 欧美日韩免费一区二区三区视频| 香蕉影视欧美成人| 日韩精品一区二区三区swag| 狠狠色丁香婷婷综合| 亚洲国产精品成人综合色在线婷婷| 国产91在线看| 亚洲精品免费看| 欧美精品日韩一本| 激情文学综合网| 国产精品毛片无遮挡高清| 色综合咪咪久久| 五月激情综合婷婷| 26uuu亚洲综合色欧美| 成人性色生活片免费看爆迷你毛片| 中文字幕在线观看不卡视频| 欧洲日韩一区二区三区| 美女尤物国产一区| 中文字幕欧美国产| 欧美天堂亚洲电影院在线播放| 免费成人美女在线观看| 国产精品每日更新在线播放网址| 色琪琪一区二区三区亚洲区| 日韩影视精彩在线| 久久精品一区二区| 欧美图片一区二区三区| 国产自产2019最新不卡| 亚洲另类在线制服丝袜| 欧美一区二区三区在| 成人免费毛片嘿嘿连载视频| 夜夜亚洲天天久久| 26uuu亚洲综合色欧美| 色婷婷综合久久久久中文一区二区| 日本欧美韩国一区三区| 欧美激情在线一区二区三区| 欧美日韩一级大片网址| 国产精品亚洲视频| 亚瑟在线精品视频| 美美哒免费高清在线观看视频一区二区 | 一区二区高清免费观看影视大全| 欧美一级视频精品观看| 99久久精品久久久久久清纯| 日本午夜精品一区二区三区电影| 中文字幕不卡在线播放| 91精品国产高清一区二区三区| 懂色av一区二区三区免费观看| 午夜精品久久久久影视| 国产精品久久三| 精品日韩在线一区| 欧洲国内综合视频| 成人丝袜18视频在线观看| 人妖欧美一区二区| 1000精品久久久久久久久| 2023国产精品| 91精品国产手机| 色爱区综合激月婷婷| 国产精品 欧美精品| 日韩福利视频网| 亚洲最色的网站| 国产精品萝li| 久久新电视剧免费观看| 欧美精品久久99| 色八戒一区二区三区| 成人小视频在线| 国产乱子伦一区二区三区国色天香| 亚洲一区日韩精品中文字幕| 国产欧美精品在线观看| 日韩欧美色电影| 欧美日韩一区国产| 色欧美88888久久久久久影院| 国产91丝袜在线观看| 激情综合色播五月| 老司机精品视频在线| 婷婷久久综合九色综合伊人色| 亚洲精品国产精华液| 国产精品久久一卡二卡| 国产目拍亚洲精品99久久精品| 精品黑人一区二区三区久久| 欧美精品一卡两卡|