三驾马车
导航
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. 我们一起学网络程序设计之一~~~~~~~~~~~~~~~~~~创建一个客户器
搜索
积分与排名
积分 - 17209
排名 - 1885
最新评论
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的用法(3251)
2. Image相关的数据类型转换和用法(1708)
3. HTTP错误代码详细介绍(1518)
4. lomboz、tomcat、emf插件下载网址(884)
5. java.awt包介绍(860)
评论排行榜
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
逍遥客
阅读(310)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 逍遥客