📄 tcptest.java
字号:
import java.io.*;
import java.net.*;
class EchoClient extends AbstractConnection implements Runnable
{
// 客户端执行线程
private Thread exec;
// 用指定的Socket创建一个新的EchoClient
public EchoClient(Socket s)
{
super(s);
exec = new Thread(this);
}
public void start()
{
exec.start();
}
public void run()
{
// 打开连接
if(! open())
{
System.out.println("Could not open connection.");
return;
}
// 输入终止标记
final String sentinel = "ZZZ";
// 创建一个BufferedReader来接收用户输入
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// 从用户那里读入输入的字符串
String input = "";
while(true)
{
System.out.print("Enter a string, or '" + sentinel + "' to quit: ");
try
{
input = reader.readLine();
}
catch(IOException e)
{
System.err.println("General I/O error; client terminating.");
close(true);
return;
}
// 如果用户输入标记值的话则发送一个EOT信号
if(sentinel.equals(input))
{
send(END_OF_TRANSMISSION, "");
close(false);
return;
}
// 否则,请求反转字符串服务
send("Reverse", input);
recv();
// 打印服务的响应
System.out.println(parseMessage());
}
}
} // EchoClient
// TCP连接测试程序
public class TCPTest
{
// 在没有指定端口时使用的默认端口
public final static int DEFAULT_PORT = 1234;
public static void main(String[] args)
{
// 在指定别的端口之前采用默认的端口号
int port = DEFAULT_PORT;
// 确保用户至少指定了连接服务器
if(args.length > 1)
{
// 如果指定了的话,得到端口号
if(args.length >= 2)
{
try
{
port = Integer.parseInt(args[1]);
}
catch(NumberFormatException e)
{
System.err.println("Invalid port specification; using default port of " + DEFAULT_PORT);
port = DEFAULT_PORT;
}
}
// 创建客户端
try
{
new EchoClient(new Socket(args[0], port)).start();
}
catch(Exception e)
{
System.err.println("Could not create client socket!");
}
}
// 如果没有指定主机名则打印一条错误消息
else
{
System.out.println("Usage: java TCPTest <hostname> [<port>]");
System.exit(0);
}
} // main
} // TCPTest
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -