惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - 大象怒怒

12个球称三次的问题 电脑嘀嘀响的原因(电脑变慢) javascript的调试工具 PHP 怎样取得本地化时间 PHP 解析xml(包含非英文字符) Linux下配置PHP运行环境 安装Oracle(粗略写了下) PHP5+apache_2.0.50+MySQL4.0+SQLServer安装方法 - 大象怒怒 - 博客园 About SAPLogon(SAP登录 密码不能输入) XP下安装SQL2000企业版 游戏代码部分-------client包(MyClient类和ReadThread类) 会计关键术语(全) SQL 新增/修改 表字段列的类型等 电压表.ASM 交换机MAC地址表的形成过程动态演示 会计部分关键术语3 会计部分关键术语2 更改表字段的描述 SQL语句实现 vb 对注册表操作 会计部分关键术语1
游戏代码部分-------server包(MyServer类和ReadThread类)
大象怒怒 · 2006-05-09 · via 博客园 - 大象怒怒

package server;
/**ReadRhread */
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
=new InputStreamReader(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 <a href="../net/Net.html">Net</a>
 * 
@see <a href="ReadThread.html">ReadThread</a>
 
*/public class MyServer extends Thread{/**接收数据的端口*/
 
private final int RECEIVE_IN_PORT=9090;
 
/**发送数据的端口*/
  
private final int RECEIVE_OUT_PORT=9091;
  
/**向总控台写数据的流*/
  
private PrintWriter m_printWriter;
  
/**服务器端监听接收数据的套接字*/
  
private ServerSocket m_rInServer;
  
/**服务器端监听发送数据的套接字*/
  
private ServerSocket m_rOutServer;
  
/**依赖的网络接口*/
  
private Net m_Owner;
  
/**读数据流的线程*/
  
private ReadThread readThread=null;
  
/**连接客户机成功失败有标志*/
  
private boolean bConnDone=false;
  
/**创建成功标志*/
  
private boolean bServerDone=true;
  
/**
   * MyServer的构造器
   * 
@param netRead 网络接口NetRead
   
*/
 
public MyServer(Net netRead)
  {
    m_Owner
=netRead;
    
try {
      m_rInServer 
= new ServerSocket(RECEIVE_IN_PORT);
      m_rOutServer 
= new ServerSocket(RECEIVE_OUT_PORT);
    }
   
catch (IOException e)
    {
      System.out.println(e.getMessage());
    }
  }
 
/**
   * 重写Thread的run()方法,MyServer线程的入口点
   * 
@see readThread#start()
   
*/
 
public void run()
  {
  
// try{
      while(!bConnDone){
        
try{
          Socket socketIn 
= m_rInServer.accept();
          Socket socketOut 
= 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 void readStr(String str)
 {
       m_Owner.readStr(str);
 }
 
/**
  * 向对方发送数据
  * 
@param str 要发送东西
  * 
@return 若写成功,则返回真
  
*/
 
public boolean writeStr(String str)
 {
  
if(m_printWriter==null)return false;
   
try
   {
       m_printWriter.println(str);
       
return true;
   }
  
catch(Exception e)
   {
     m_Owner.showMessage(str
+"发送失败!");
     
return false;
   }

 }

/**
  * 关闭套接字和输入流,终止主机对象MyServer线程
 
*/
 
public void close()
 {
  
try{
       readThread.stop();
       readThread
=null;
       m_printWriter.close();
       m_rOutServer.close();
       m_rInServer.close();
   }
catch(Exception e){}
 }
 
/**
  * 返回有没有机器连接成功
  * 
@return 已经有机器连接上服务器 返回true
  
*/
 
public boolean getbConnDone()
 {
  
return bConnDone;
 }
 
/**
  * 设置有没有机器连接
  * 
@param bool true就时有连接
  
*/public void setConnDone(boolean bool)
 {
   bConnDone
=bool;
 }
 
/**
  * 返回创建服务器成功标志
  * 
@return
 
*/
 
public boolean getServerDone()
 {
  
return this.bServerDone;
 }
}