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

推荐订阅源

博客园 - 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企业版 游戏代码部分-------server包(MyServer类和ReadThread类) 会计关键术语(全) SQL 新增/修改 表字段列的类型等 电压表.ASM 交换机MAC地址表的形成过程动态演示 会计部分关键术语3 会计部分关键术语2 更改表字段的描述 SQL语句实现 vb 对注册表操作 会计部分关键术语1
游戏代码部分-------client包(MyClient类和ReadThread类)
大象怒怒 · 2006-05-09 · via 博客园 - 大象怒怒

MyClient类和ReadThread类

package client;
import java.net.*;
import java.io.*;
import net.*;
/**
 * 用于连接MyServer
 * 
@see <a href="../net/Net.html">Net</a>
 * 
@see <a ref="ReadThread.html">ReadThread</a>
 
*/
public class MyClient {
  
/**接收数据的端口*/
  
private final int RECEIVE_OUT_PORT=9090;
  
/**发送数据的端口*/
  
private final int RECEIVE_IN_PORT=9091;
  
/**向总控台写数据的流*/
  
private PrintWriter m_printWriter;
  
/**依赖的网络接口*/
  
private Net m_Owner;
  
/**读数据流的线程*/
  
private ReadThread readThread=null;
  
/**用于通信的套接字*/
  
private Socket socketIn,socketOut;
  
/**连接成功失败的标志*/
  
private  boolean m_connectFlag=false;
  
/**
   * MyClient的构造器
   * 
@param str 要连接的MyServer的IP地址
   * 
@param netRead 依赖的网络接口
   
*/
  
public MyClient(String str, Net netRead)
  {
    m_Owner 
= netRead;
    
try
    {
      socketOut 
= new Socket(str, RECEIVE_OUT_PORT);

      socketIn 

= new Socket(str, RECEIVE_IN_PORT);
      readThread 
= new ReadThread(socketIn, this); //实例readThread
      readThread.start(); //启动readThread线程
      OutputStreamWriter writer = new OutputStreamWriter(socketOut.
          getOutputStream());
      m_printWriter 
= new PrintWriter(writer, true);
      m_connectFlag 
= true;
    }
    
catch (Exception e)
    {
      m_Owner.showMessage(
"连接" + str + "失败");
      m_connectFlag 
= false;
    }
  }
  
/**
   *  当数据来的时候调用
   * 
@param str 读进来的数据
   
*/
  
protected void readStr(String str)
  {
    System.out.println(str);
    m_Owner.readStr(str);
  }
  
/**
   * 往对方写东西
   * 
@param str 要写的东西
   * 
@return 若写成功,则返回真
   * 
@see m_printWriter
   
*/
  
public boolean writeStr(String str)
  {
    
if (m_printWriter == null)
      
return false;
    
try
    {
      m_printWriter.println(str);
    }
    
catch (Exception e)
    {
      m_Owner.showMessage(str 
+ "发送失败!");
      
return false;
    }
    
return true;
  }
/**
   * 关闭MyClient
   * 
@see readThread#stop()
   
*/
  
public void close()
  {
    
try
    {
     readThread.stop();
     readThread 
= null;
     m_printWriter.close();
      socketOut.close();
      socketIn.close();
    }
    
catch (Exception e) {}
  }
  
/**获取连接成功失败的标志*/
  
public boolean getConnectFlag()
  {
    
return m_connectFlag;
  }
}

package client;
import java.io.*;
import java.net.*;
/**
 *客户机端从套接字读数据
 
*/
public class ReadThread  extends Thread
{
  
/**用户连接的通信套接字*/
  
private Socket clientRequest;
  
/**输入流*/
  
private BufferedReader input;
  
/**读进来的数*/
  
private String m_sReadIn = "";
  
/**客户机*/
  
private MyClient m_myClient;
  
/**线程结束标志*/
  
private boolean done = false;
  
/**
   * 客户机端的ReadThread的构造器
   * 
@param s 套接字
   * 
@param mc 客户机
   
*/
  
public ReadThread(Socket s, MyClient mc) {
    
/**接收receiveServer传来的套接字*/
    
this.clientRequest = s;
    
this.m_myClient = mc;
    
/**字符流*/
    InputStreamReader reader;
    
try {
      
/**初始化输入、输出流*/
      reader 
= new InputStreamReader(clientRequest.getInputStream());
      input 
= new BufferedReader(reader);
    }
    
catch (IOException e) {
      System.out.println(e.getMessage());
    }
  }
/**
   * 线程的执行方法
   
*/
  
public void run()
  {
    
while (!done)
    {
      
try
      {
        m_sReadIn 
= input.readLine();
        m_myClient.readStr(m_sReadIn);
        
//System.out.println(m_sReadIn); //接收客户机指令
      }
      
catch (IOException e)
      {
        System.out.println(e.getMessage());
      }
    }
    
try
    {
      input.close() ;
      clientRequest.close(); 
//关闭套接字
    }
    
catch (IOException e) {  }
  } 
//end of run
  /**
   * 结束线程
   
*/
  
public void close()
  {
    done 
= false;
  }
}