开发客户端代码
我们可以按以下的步骤,编写的基于多线程的客户端代码。
第一步,在 “TCPSocket”项目里,新建一个名为ThreadClient.java的代码文件。同样是编写package和import部分的代码,用来打包和引入包文件,如下所示:
package tcp;
import java.net.*;
import java.io.*;
第二步,编写线程执行主体的ClientThreadCode类,同样,这个类通过继承Thread来实现线程的功能。
class ClientThreadCode extends Thread
{
//客户端的socket
private Socket socket;
//线程统计数,用来给线程编号
private static int cnt = 0;
private int clientId = cnt++;
private BufferedReader in;
private PrintWriter out;
//构造函数
public ClientThreadCode(InetAddress addr)
{
try
{
socket = new Socket(addr, 3333);
}
catch(IOException e)
{
e.printStackTrace();
}
//实例化IO对象
try
{
in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(
new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
//开启线程
start();
}
catch(IOException e)
{
//出现异常,关闭socket
try
{
socket.close();
}
catch(IOException e2)
{
e2.printStackTrace();
}
}
}
//线程主体方法
public void run()
{
try
{
out.println("Hello Server,My id is " + clientId );
String str = in.readLine();
System.out.println(str);
out.println("byebye");
}
catch(IOException e)
{
e.printStackTrace();
}
finally
{
try
{
socket.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
}