客户端的端口要和服务器的端口一样才行的
要不你把br.readline()打印出来吧
要不你把br.readline()打印出来吧
解决方案 »
- 我的jar文件在自己的电脑双击不能运行,可是在别人的电脑可以运行。
- 求保存对象的方法
- 高分求助,hashmap.put死循环问题,需要的是为什么会死循环
- 如何在数值类型转换后自动给数字前面补零?
- 我在学接口时出遇到的问题,大家帮我看一下出错在什么地方,怎么改正,谢谢了
- 一个int型如何转成Integer型?
- applet?
- 支持java JDBC的数据库软件有那些?那个最好用?
- 如何在RedHat Linux6.2的/etc/rc.d/rc3.d/下配置一文件,使得在开机时可自动运行我所编好的类?请求帮助!!!
- java初级问题
- 如何用java备份mysql数据库?大家帮帮我!
- 静态方法在继承中的情况!
客户端的端口要和服务器的端口一样才行的?
还有这回事?不太可能吧。 再说了,br.readline()都已经等待了,没法打印。
BufferedReader中存在缓存,采用br.readLine()是按单位接收,回车换行为终结或则是流结束。建议如果发送端不是按指令行发送,就别用这种东西。
你那种创建线程的方法是GetMessage实现Runnable接口的情况。
if((line = br.readLine())!=-1)
你不输入信息它就停在这里 不继续执行
所以一般有阻塞的时候要用到多线程。
这样你就既可以 获取readLine方法的信息
又不影响你的主函数运行所以你现在要引入线程咯 。。
按你的说法,java的客户端还必须连java的服务器啦。要是别的没有flush怎么办?
st = new Thread(g); --------这个是Runnable接口的启动方法把
st.start();
class GetMessage extends Thread{
public void run(){
你应该让对方发送回车
private BufferedReader myReader; private String myRemoteAddress;String command; char[] resp;
int read = 0; timeoutTask = new TimeOutTask(this);
mySessionMgr.startTimeoutTask(this); while( !isStopping )
{
resp = new char[4000];
try
{
read = myReader.read(resp); if (read == -1) //if remote socket is closed
{
logger.info("Remote Disconnected: " + myRemotePort + "@" + myRemoteAddress);
isStopping = true; myWriter.close();
myReader.close();
myClientSocket.close(); myWriter = null;
myReader = null;
myClientSocket = null; continue;
} command = new String(resp,0,read);
timeoutTask.cancel();
myProcessor.processCLIMsg(command, this);
//
timeoutTask = new TimeOutTask(this);
mySessionMgr.startTimeoutTask(this);
// myClientSocket.close();以上信息.FRI