游戏代码部分-------server包
来源:互联网 发布:ios旧版手机淘宝 编辑:程序博客网 时间:2024/05/21 10:33
package server;
/**类serverThread*/
import java.io.*;
import java.net.*;
/**
* 服务器端的ReadRhread
* @see clientRequest
*/
public class ReadThread extends Thread{
/**用户连接的通信套接字*/
private Socket clientRequest;
/**输入流*/
private BufferedReader input;
/**读进来的数*/
private String m_sReadIn="";
/**服务器*/
private MyServer m_myServer;
/**线程结束的标志*/
private boolean done=false;
/**
* 服务器端的ReadRhread的构造器
* @param s 在9090端口上监听读的套接字
* @param ms 服务器MyServer类
* @see
*/
public ReadThread(Socket s,MyServer ms)
{
/**接收客户端传来的套接字*/
this.clientRequest=s;
/**服务器*/
this.m_myServer=ms;
/**字符流*/
InputStreamReader reader;
try{
/**初始化输入、输出流*/
reader=newInputStreamReader(clientRequest.getInputStream());
input=new BufferedReader(reader);
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
/**
* 线程的执行方法读取客户机指令
* @see input.readLine()
* @see m_myServer.readStr(m_sReadIn)
*/
public void run()
{
while(!done && m_myServer!=null)
{
try{
/**接收客户机指令*/
m_sReadIn=input.readLine();
m_myServer.readStr(m_sReadIn);
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
try
{
input.close() ;
clientRequest.close();
}
catch(IOException e){ }
}
/**
* 结束线程
*/
public void close()
{
done = false;
}
}
package server;
import java.io.*;
import java.util.*;
import java.net.*;
import net.*;
/**
* 类MyServer扩充Thread
* @see <ahref="../net/Net.html">Net</a>
* @see <ahref="ReadThread.html">ReadThread</a>
*/
public class MyServer extends Thread{
/**接收数据的端口*/
private finalint RECEIVE_IN_PORT=9090;
/**发送数据的端口*/
private finalint RECEIVE_OUT_PORT=9091;
/**向总控台写数据的流*/
privatePrintWriter m_printWriter;
/**服务器端监听接收数据的套接字*/
privateServerSocket m_rInServer;
/**服务器端监听发送数据的套接字*/
privateServerSocket m_rOutServer;
/**依赖的网络接口*/
private Netm_Owner;
/**读数据流的线程*/
privateReadThread readThread=null;
/**连接客户机成功失败有标志*/
privateboolean bConnDone=false;
/**创建成功标志*/
privateboolean bServerDone=true;
/**
* MyServer的构造器
* @paramnetRead 网络接口NetRead
*/
publicMyServer(Net netRead)
{
m_Owner=netRead;
try {
m_rInServer = new ServerSocket(RECEIVE_IN_PORT);
m_rOutServer = new ServerSocket(RECEIVE_OUT_PORT);
}
catch (IOExceptione)
{
System.out.println(e.getMessage());
}
}
/**
* 重写Thread的run()方法,MyServer线程的入口点
* @seereadThread#start()
*/
public voidrun()
{
// try{
while(!bConnDone){
try{
SocketsocketIn = m_rInServer.accept();
SocketsocketOut = m_rOutServer.accept();
readThread = new ReadThread(socketIn, this);
readThread.start();
/**文本流——>字符流*/
OutputStreamWriter writer = new OutputStreamWriter(socketOut.getOutputStream());
m_printWriter = new PrintWriter(writer, true);
m_Owner.showMessage("对手:"+socketIn.getInetAddress()+"加入游戏");
bConnDone=true;
}catch(Exception e)
{
bConnDone=true;
bServerDone=false;
m_Owner.setNetStatus(Net.NOCONNECT);
m_Owner.showMessage("创建服务器失败!");
}
}
//}catch(IOException e){
//System.out.println(e.getMessage());
//}
}
/**
* 当数据来的时候调用,接口上的读数据,
* @param str 读进来的数据
*/
protected voidreadStr(String str)
{
m_Owner.readStr(str);
}
/**
* 向对方发送数据
* @param str 要发送东西
* @return 若写成功,则返回真
*/
public booleanwriteStr(String str)
{
if(m_printWriter==null)return false;
try
{
m_printWriter.println(str);
returntrue;
}
catch(Exception e)
{
m_Owner.showMessage(str+"发送失败!");
returnfalse;
}
}
/**
* 关闭套接字和输入流,终止主机对象MyServer线程
*/
public voidclose()
{
try{
readThread.stop();
readThread=null;
m_printWriter.close();
m_rOutServer.close();
m_rInServer.close();
}catch(Exception e){}
}
/**
* 返回有没有机器连接成功
* @return 已经有机器连接上服务器 返回true
*/
public booleangetbConnDone()
{
returnbConnDone;
}
/**
* 设置有没有机器连接
* @param booltrue就时有连接
*/
public voidsetConnDone(boolean bool)
{
bConnDone=bool;
}
/**
* 返回创建服务器成功标志
* @return
*/
public booleangetServerDone()
{
returnthis.bServerDone;
}
}
- 游戏代码部分-------server包
- 游戏代码部分-------client包
- 游戏代码部分-------game包------ActionHandler.java
- 游戏代码部分-------game包------ChatBar .java
- 游戏代码部分-------game包------GameApp.java
- 游戏代码部分-------game包------GameFrame.java
- 游戏代码部分-------game包------KeyHandler.java
- 游戏代码部分-------game包------MenuBar.java
- 游戏代码部分-------game包------PieceBuffer.java
- 游戏代码部分-------game包------Producer.java
- 游戏大厅的部分代码
- 扎金花 游戏开发细节与部分代码
- 微信登录流程(针对游戏代码部分)
- net/http/server.go部分代码的解释
- Cocos2d-x 3.2 大富翁游戏项目开发-第九部分 代码部分优化
- 分享一个单机游戏的NSIS封装包脚本代码
- Cocos2d-x简单游戏<捕鱼达人>代码实现|第五部分:游戏类
- 代码 部分
- Microsoft GDI+概述
- 面向服务的编程(Service Oriented Programming ,SOP)
- 【灌水】努力学习早日进入安焦秘密板块
- (C#)DataGrid实现自定义分页,鼠标移至变色,删除确认、可编辑,可删除
- 十句大实话
- 游戏代码部分-------server包
- SCM软件配置管理简介
- 游戏代码部分-------client包
- toolbar + tooltips
- 又是野心勃勃的看书计划
- 判断键盘动作
- 游戏代码部分-------game包------ActionHandler.java
- ListView 控件写的基本操作
- blog开工