心无所虑-做想做的
posts - 0, comments - 2, trackbacks - 0, articles - 4
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2025年7月
>
日
一
二
三
四
五
六
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
留言簿
给我留言
查看公开留言
查看私人留言
文章分类
Google Application Engine(1)
Hibernate3
HTML
JAVA(2)
JavaScript
JSP
Spring2
SSH框架
Struts2.0
界面设计
项目经验管理(1)
文章档案
2009年5月 (1)
2008年5月 (3)
搜索
最新评论
1. re: Java+JSP分页
没有关闭资源
--kiwi
2. re: Java+JSP分页
呵呵,不能说是万能,充其量算是一个分页方法。
--游客
【转】Java多线程Socket操作猜数游戏样例
Posted on 2008-05-07 21:38
飞雪无情
阅读(230)
评论(0)
编辑
收藏
所属分类:
JAVA
1
服务器
端程序,接受连接并处理客户端的请求
1
ServerApp.java
2
package
test;
3
import
java.io.
*
;
4
import
java.net.
*
;
5
/** */
/**
*/
/** */
/**
6
* 服务器端程序
7
*
8
*
@author
luxuan310,修正赵学庆。
9
*
10
*/
11
public
class
ServerApp
{
12
static
final
int
PORT
=
9000
;
13
private
ServerSocket serverSocket;
14
private
Socket socket;
15
private
BufferedReader netIn;
16
private
PrintWriter netOut;
17
public
ServerApp()
throws
IOException
{
18
serverSocket
=
new
ServerSocket(PORT);
19
system.out.println(
"
server start
"
);
20
while
(
true
)
{
21
//
等待连接
22
socket
=
serverSocket.accept();
23
ServerThread st
=
new
ServerThread(socket);
24
new
Thread(st).start();
25
}
26
}
27
class
ServerThread
implements
Runnable
{
28
private
Socket socket;
29
private
int
randomNumber;
30
private
int
clientGuessNumber;
31
public
ServerThread(Socket s)
throws
IOException
{
32
socket
=
s;
33
netIn
=
new
BufferedReader(
new
InputStreamReader(socket.getInputStream()));
34
netOut
=
new
PrintWriter(socket.getOutputStream());
35
}
36
public
void
run()
{
37
system.out.println(
"
client
"
+
socket.getInetAddress()
+
"
is connect
"
);
38
randomNumber
=
(
int
) (Math.random()
*
100
);
39
system.out.println(
"
random number is:
"
+
randomNumber);
40
try
{
41
clientGuessNumber
=
Integer.parseInt(netIn.readLine());
42
system.out.println(
"
client guess number is:
"
+
clientGuessNumber);
43
for
(
int
i
=
3
; i
>
0
; i
--
)
{
44
if
(clientGuessNumber
==
randomNumber)
{
45
netOut.println(
"
OK,恭喜,猜对了
"
);
46
ClientApp.finished
=
true
;
47
}
else
if
(clientGuessNumber
<
randomNumber)
{
48
netOut.println(
"
您猜的数小了,您还有
"
+
(i
-
1
)
+
"
次机会
"
);
49
ClientApp.finished
=
false
;
50
}
else
if
(clientGuessNumber
>
randomNumber)
{
51
netOut.println(
"
您猜的数大了,您还有
"
+
(i
-
1
)
+
"
次机会
"
);
52
ClientApp.finished
=
false
;
53
}
54
netOut.flush();
55
if
(
!
ClientApp.finished)
{
56
clientGuessNumber
=
Integer.parseInt(netIn.readLine());
57
}
else
{
58
break
;
59
}
60
}
61
if
(
!
ClientApp.finished)
{
62
netOut.println(
"
OK,您没有机会了,游戏结束
"
);
63
}
64
ClientApp.finished
=
true
;
65
}
catch
(IOException e)
{
66
}
finally
{
67
try
{
68
netOut.close();
69
netIn.close();
70
socket.close();
71
}
catch
(IOException ee)
{
72
}
73
}
74
}
75
}
76
public
static
void
main(String[] args)
throws
IOException
{
77
new
ServerApp();
78
}
79
}
2 客户端程序,发送每次猜的数字
1
package
test;
2
import
java.io.
*
;
3
import
java.net.
*
;
4
public
class
ClientApp
{
5
private
Socket socket;
6
private
BufferedReader netIn;
7
private
PrintWriter netOut;
8
private
BufferedReader keyboardIn;
9
static
Boolean finished
=
false
;
10
public
ClientApp()
throws
IOException
{
11
system.out.println(
"
请输入服务器地址,连接本地服务器请输入localhost
"
);
12
keyboardIn
=
new
BufferedReader(
new
InputStreamReader(System.in));
13
try
{
14
if
(keyboardIn.readLine().equalsIgnoreCase(
"
localhost
"
))
{
15
socket
=
new
Socket(InetAddress.getLocalHost(), ServerApp.PORT);
16
}
else
{
17
socket
=
new
Socket(InetAddress.getByName(keyboardIn.readLine()), ServerApp.PORT);
18
}
19
netIn
=
new
BufferedReader(
new
InputStreamReader(socket.getInputStream()));
20
netOut
=
new
PrintWriter(socket.getOutputStream());
21
}
catch
(UnknownHostException e)
{
22
system.err.println(
"
连接不到服务器
"
);
23
system.exit(
-
1
);
24
}
25
system.out.println(
"
连接成功
"
);
26
while
(
!
finished)
{
27
system.out.println(
"
请输入0-100之间的数字
"
);
28
netOut.println(keyboardIn.readLine());
29
netOut.flush();
30
String str
=
netIn.readLine();
31
if
(str
==
null
)
{
32
finished
=
true
;
33
break
;
34
}
35
system.out.println(str);
36
if
(str.startsWith(
"
OK
"
))
{
37
finished
=
true
;
38
break
;
39
}
40
}
41
netIn.close();
42
netOut.close();
43
keyboardIn.close();
44
socket.close();
45
}
46
public
static
void
main(String[] args)
throws
IOException
{
47
new
ClientApp();
48
}
49
}
3.运行结果
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
【转】Java多线程Socket操作猜数游戏样例
Java+JSP分页
Powered by:
BlogJava
Copyright © 飞雪无情