三駕馬車
導航
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.?我們一起學網絡程序設計之一~~~~~~~~~~~~~~~~~~創建一個客戶器
搜索
積分與排名
積分 - 17462
排名 - 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插件下載網址(893)
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 © 逍遙客
主站蜘蛛池模板:
鄂温
|
吉木乃县
|
肥东县
|
庆阳市
|
民权县
|
观塘区
|
枝江市
|
巫山县
|
什邡市
|
连州市
|
星座
|
郯城县
|
竹溪县
|
福安市
|
平湖市
|
饶阳县
|
安达市
|
林甸县
|
逊克县
|
商洛市
|
绿春县
|
南部县
|
通榆县
|
防城港市
|
铜陵市
|
澜沧
|
甘洛县
|
海伦市
|
泰顺县
|
惠东县
|
嫩江县
|
海门市
|
梁山县
|
蕉岭县
|
会泽县
|
柞水县
|
攀枝花市
|
高平市
|
台南市
|
松溪县
|
建阳市
|