Cocos网络篇[3.2](3) ——Socket连接(1)
发布时间:2020-12-14 17:12:03 所属栏目:百科 来源:网络整理
导读:【唠叨】 在客户端游戏开发中,使用HTTP进行网络通信的比较少,一般使用的都是Socket进行通信。而HTTP一般用于网页或者网页游戏。 使用第三方Socket通信库: ODSocket 。 【参考】 http://www.jb51.cc/article/p-xzvxhjpg-eg.html(Socket详解) http://www.
24
|
//
public
class
Server{
static
void
main(String[]args)
throws
IOException{
//创建ServerSocket,监听端口号:12345
ServerSocketss=
new
ServerSocket(
12345
);
//创建用于管理客户端的收发数据的子线程类
ClientThreadclientThread=
ClientThread();
clientThread.start();
System.out.println(
"服务器开启啦"
);
//监听端口号:12345
//等待客户连接accept()
while
(
true
){
//开始接收客户端的连接
Socketsocket=ss.accept();
"有新客户连接~"
);
clientThread.addClient(socket);
}
}
}
2.2、ClientThread类
|
//
//继承Thread线程类
ClientThread
extends
Thread{
//客户端连接的socket列表
private
ArrayList<Socket>clients=
ArrayList<Socket>();
//添加客户
addClient(Socketsocket){
clients.add(socket);
}
//删除客户
removeClient(Socketsocket){
clients.remove(socket);
}
//向客户发送数据
sendMessage(Socketsocket,Stringdata)
IOException{
//给玩家发送数据
OutputStreamos=socket.getOutputStream();
os.write(data.getBytes(
"UTF-8"
));
}
@Override
run(){
){
try
{
for
(Socketsocket:clients){
//获取客户端发来的数据
InputStreamis=socket.getInputStream();
int
len=is.available()+
1
;
byte
[]buff=
new
[len];
flag=is.read(buff);
//read()返回-1,说明客户端的socket已断开
if
(flag==-
){
"有客户断开连接~"
);
this
.removeClient(socket);
break
;
}
//输出接收到的数据
Stringread=
String(buff);
"收到数据:"
+read);
//给玩家发送数据
Stringdata=
"恭喜你,连接成功啦~~"
;
sendMessage(socket,data);
}
sleep(
10
);
}
catch
(IOExceptione){
e.printStackTrace();
(InterruptedExceptione){
e.printStackTrace();
}
}
}
}
3、运行服务器
|