主题:[讨论]TCP客户端疑问
import java.net.*;
import java.io.*;
class Servicer implements Runnable
{
private Socket s;
public Servicer(Socket s)
{
this.s = s;
}
public void run()
{
try
{
InputStream ips=s.getInputStream();
OutputStream ops=s.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ips));
//DataOutputStream dos = new DataOutputStream(ops);
PrintWriter pw = new PrintWriter(ops,true);
//pw.println(strLine);产生与特定平台相关的换行符,PrintStream产生的换行符都是\n
while(true)
{
String strWord = br.readLine();
//System.out.println(strWord +":" + strWord.length());
if(strWord. equalsIgnoreCase("quit"))
{
break;
}
System.out.println(strWord+":"+strWord.length());
/*abd{backspace}c
c{backspace}dba */ //abc---->dba abc:5
String strEcho = (new StringBuffer(strWord).reverse()).toString();
//dos.writeBytes(strWord +"---->"+ strEcho +"\r\n");
//dos.writeBytes(strWord + "---->"+ strEcho +System.getProperty("line.separator"));
pw.println(strWord + "---->"+ strEcho );
}
br.close();
//关闭包装类,会自动关闭包装类中所包装的底层类。所以不用调用ips.close()
//dos.close();
pw.close();
s.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
public class ReverseServer
{
public static void main(String [] args)
{
try
{
ServerSocket ss=new ServerSocket(8001);
boolean bRunning = true;
while(bRunning)
{
Socket s=ss.accept();
new Thread(new Servicer(s)).start();
}
ss.close();//使用while(true)时编译不通过,提示此语句无法到达
}catch(Exception e)
{
e.printStackTrace();
}
}
}
一个简单的tcp网络程序,用windows的telnet作为客户端,用telnet 127.0.0.1 8001连接上了,第一次输入字符时看不见输入的字符,按回车得到结果,第二次输入字符时却看见输入的字符
ab---->ba
agc
agc---->cga
ffdsekj
ffdsekj---->jkesdf
dfghhg
dfghhg---->ghhgfd
其中第一行没有字符显示,事实上输入了ab,其中没有箭头的为客户端输入,有箭头的为服务器端输出,问一下各位知不知道为什么第一次输入不回显字符,确切的说是只看见有一些像下划线的小方块在移动
import java.io.*;
class Servicer implements Runnable
{
private Socket s;
public Servicer(Socket s)
{
this.s = s;
}
public void run()
{
try
{
InputStream ips=s.getInputStream();
OutputStream ops=s.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ips));
//DataOutputStream dos = new DataOutputStream(ops);
PrintWriter pw = new PrintWriter(ops,true);
//pw.println(strLine);产生与特定平台相关的换行符,PrintStream产生的换行符都是\n
while(true)
{
String strWord = br.readLine();
//System.out.println(strWord +":" + strWord.length());
if(strWord. equalsIgnoreCase("quit"))
{
break;
}
System.out.println(strWord+":"+strWord.length());
/*abd{backspace}c
c{backspace}dba */ //abc---->dba abc:5
String strEcho = (new StringBuffer(strWord).reverse()).toString();
//dos.writeBytes(strWord +"---->"+ strEcho +"\r\n");
//dos.writeBytes(strWord + "---->"+ strEcho +System.getProperty("line.separator"));
pw.println(strWord + "---->"+ strEcho );
}
br.close();
//关闭包装类,会自动关闭包装类中所包装的底层类。所以不用调用ips.close()
//dos.close();
pw.close();
s.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
public class ReverseServer
{
public static void main(String [] args)
{
try
{
ServerSocket ss=new ServerSocket(8001);
boolean bRunning = true;
while(bRunning)
{
Socket s=ss.accept();
new Thread(new Servicer(s)).start();
}
ss.close();//使用while(true)时编译不通过,提示此语句无法到达
}catch(Exception e)
{
e.printStackTrace();
}
}
}
一个简单的tcp网络程序,用windows的telnet作为客户端,用telnet 127.0.0.1 8001连接上了,第一次输入字符时看不见输入的字符,按回车得到结果,第二次输入字符时却看见输入的字符
ab---->ba
agc
agc---->cga
ffdsekj
ffdsekj---->jkesdf
dfghhg
dfghhg---->ghhgfd
其中第一行没有字符显示,事实上输入了ab,其中没有箭头的为客户端输入,有箭头的为服务器端输出,问一下各位知不知道为什么第一次输入不回显字符,确切的说是只看见有一些像下划线的小方块在移动