三駕馬車
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2007年5月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
統計
隨筆 - 29
文章 - 1
評論 - 11
引用 - 0
公告
鳥哥的 Linux 私房菜的下載地址:http://www.unbe.cn/blog/?p=48
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆檔案
(29)
2007年7月 (3)
2007年5月 (11)
2007年4月 (12)
2007年3月 (3)
文章檔案
(1)
2007年3月 (1)
朋友Blog
尋覓
(rss)
小覓,很牛的.你踩他的覺對不會白踩,會很有收獲的.加油喲!
最新隨筆
1.?
標簽中classid的屬性
2.?HTTP錯誤代碼詳細介紹
3.?無法找到主機“smtp”。請檢查輸入的服務現在器名是否正確................
4.?IIS中的MIME類型
5.?lomboz、tomcat、emf插件下載網址
6.?一個最簡單的聊天程序(支持客戶機相互通信)
7.?我們一起學網絡程序設計之四~~~~~~~~~~~~~~~~~~利用服務器與多客戶進行通信創建一個游戲
8.?我們一起學網絡程序設計之三~~~~~~~~~~~~~~~~~~雙向通信
9.?我們一起學網絡程序設計之二~~~~~~~~~~~~~~~~~~單項通信
10.?我們一起學網絡程序設計之一~~~~~~~~~~~~~~~~~~創建一個客戶器
搜索
積分與排名
積分 - 17463
排名 - 1880
最新評論
1.?re: Java this、super的用法
評論內容較長,點擊標題查看
--o
2.?re: Java this、super的用法
總結的比較詳細,頂一下!!!
--caojiangfeng
3.?re: HTTP錯誤代碼詳細介紹
評論內容較長,點擊標題查看
--g
4.?re: Image相關的數據類型轉換和用法
樓主分析得很細,我現在正好遇到了這個問題需要解決.
不過我提出一點:swt中的Image與swing中的Image不知樓主有沒有比較好相互轉換方法?因為我現在用的是swt來做界面.
--過路人
5.?re: HTTP錯誤代碼詳細介紹
評論內容較長,點擊標題查看
--Robin's Java World
閱讀排行榜
1.?Java this、super的用法(3264)
2.?Image相關的數據類型轉換和用法(1720)
3.?HTTP錯誤代碼詳細介紹(1530)
4.?lomboz、tomcat、emf插件下載網址(894)
5.?java.awt包介紹(865)
評論排行榜
1.?HTTP錯誤代碼詳細介紹(3)
2.?小游戲(拼圖)有代碼(2)
3.?Java this、super的用法(2)
4.?美中不足的(開車)游戲(1)
5.?Image相關的數據類型轉換和用法(1)
我們一起學網絡程序設計之四~~~~~~~~~~~~~~~~~~利用服務器與多客戶進行通信創建一個游戲
剪刀石頭布游戲
?????
在程序中約定0、1、2分別對應
剪刀、石頭、布.
????? 這里還要用到套接字管理器(Vector).
???? Server4.java
import
?java.net.
*
;
import
?java.io.
*
;
import
?java.util.
*
;
public
?
class
?Server4?
{
????Vector?sManager
=
new
?Vector();
???
private
?ServerSocket?server;
???Random?rnd
=
new
?Random();
????
public
?Server4()?
{}
???
void
?startServer()
{
???????
try
{
????server
=
new
?ServerSocket(
7788
);
???????System.out.println(
"
服務器套接字創建完畢
"
);
???????
while
(
true
)
{
???????????Socket?socket
=
server.accept();
???????????System.out.println(
"
已經與客戶機連接
"
);
???????????
new
?KBBCom_Thread(socket).start();
???????????sManager.add(socket);
???????????System.out.println(
"
當前客戶機連接數:?
"
+
sManager.size());
????????}
???}
catch
(Exception?e)
{
???????System.out.println(e);
?????}
???}
????
public
?
static
?
void
?main(String[]?args)?
{
????????Server4?server
=
new
?Server4();
????????server.startServer();
????}
class
?KBBCom_Thread?
extends
?Thread
{
????Socket?socket;
????
private
?DataInputStream?reader;
????
private
?DataOutputStream?writer;
????KBBCom_Thread(Socket?socket)
{
????????
this
.socket
=
socket;
????}
????
public
?
void
?run()
{
????????
try
{
????????
????????reader
=
new
?DataInputStream(socket.getInputStream());
????????writer
=
new
?DataOutputStream(socket.getOutputStream());
????????String?msg;
????????
while
((msg
=
reader.readUTF())
!=
null
)
{
????????????
if
(msg.equals(
"
OK
"
))
????????????????writer.writeInt(rnd.nextInt(
3
));
????????????????writer.flush();
????????}
????}
catch
(Exception?e)
{
????}
finally
{
????????
try
{
????????????sManager.remove(socket);
????????????
if
(reader
!=
null
)?reader.close();
????????????
if
(writer
!=
null
)?writer.close();
????????????
if
(socket
!=
null
)?socket.close();
????????????reader
=
null
;?writer
=
null
;?socket
=
null
;
????????????System.out.println(
"
客戶機離開
"
);
????????????System.out.println(
"
當前客戶機連接數:?
"
+
sManager.size());
????????}
catch
(Exception?e)
{}
????}
??}
?}
}
Client4.java
import
?java.awt.
*
;
import
?java.net.
*
;
import
?java.io.
*
;
import
?java.awt.event.
*
;
public
?
class
?Client4?
extends
?Frame?
implements
?ActionListener
{
????
private
?TextArea?msgView
=
new
?TextArea();
????
private
?Button?b1,b2,b3;
????
private
?DataInputStream?reader;
????
private
?DataOutputStream?writer;
????
public
?
static
?
int
?B1
=
0
;
????
public
?
static
?
int
?B2
=
1
;
????
public
?
static
?
int
?B3
=
2
;
????Socket?socket;
????
public
?Client4(String?title)?
{
????????
super
(title);
????????msgView.setEditable(
false
);
????????b1
=
new
?Button(
"
剪刀
"
);
????????b2
=
new
?Button(
"
石頭
"
);
????????b3
=
new
?Button(
"
布
"
);
????????add(msgView,
"
Center
"
);
????????Panel?p
=
new
?Panel();
????????p.add(b1);?p.add(b2);?p.add(b3);
????????add(p,
"
South
"
);
????????b1.addActionListener(
this
);
????????b2.addActionListener(
this
);
????????b3.addActionListener(
this
);
????????pack();
????}
????
????
private
?
void
?connect()
{
????????
try
{
????????????msgView.append(
"
嘗試與服務器連接\n
"
);
????????????socket
=
new
?Socket(
"
192.168.1.22
"
,
7788
);
????????????msgView.append(
"
開始游戲\n
"
);
????????????reader
=
new
?DataInputStream(socket.getInputStream());
????????????writer
=
new
?DataOutputStream(socket.getOutputStream());
????????}
catch
(Exception?e)
{
????????????msgView.append(
"
連接失敗
"
);
????????}
????}
????
public
?
void
?actionPerformed(ActionEvent?ae)
{
????????
int
?player
=-
1
,server
=-
1
;
????????
if
(ae.getSource()
==
b1)?player
=
B1;
????????
else
?
if
(ae.getSource()
==
b2)?player
=
B2;
????????
else
?
if
(ae.getSource()
==
b3)?player
=
B3;
????????
if
(player
==-
1
)?
return
;
????????
try
{
????????????writer.writeUTF(
"
OK
"
);
????????????writer.flush();
????????????server
=
reader.readInt();
????????}
catch
(IOException?ie)
{}
????????
if
(player
==
server)?msgView.append(
"
平局\n
"
);
????????
else
?
if
(player
>
server
||
player
-
server
==
2
)?msgView.append(
"
獲勝\n
"
);
????????
else
?msgView.append(
"
失敗\n
"
);
????}
????
public
?
static
?
void
?main(String[]?args)?
{
???????Client4?client
=
new
?Client4(
"
剪刀石頭布游戲
"
);
???????client.setVisible(
true
);
???????client.connect();
????}
}
posted on 2007-05-12 13:03
逍遙客
閱讀(321)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Powered by:
BlogJava
Copyright © 逍遙客
主站蜘蛛池模板:
萨嘎县
|
泰州市
|
宿松县
|
普定县
|
封开县
|
大港区
|
且末县
|
保定市
|
松滋市
|
哈巴河县
|
巴彦县
|
阿巴嘎旗
|
德昌县
|
琼海市
|
汕头市
|
陆川县
|
定结县
|
广州市
|
周至县
|
邵武市
|
庆元县
|
新巴尔虎右旗
|
万全县
|
吴忠市
|
咸宁市
|
武夷山市
|
南皮县
|
防城港市
|
五大连池市
|
贵溪市
|
江达县
|
淮南市
|
临澧县
|
托克托县
|
丘北县
|
育儿
|
阜阳市
|
樟树市
|
宣汉县
|
大关县
|
大理市
|