1 回答
TA贡献1946条经验 获得超4个赞
服务器代码:
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Calendar;
class ClientThread extends Thread {
private final Socket _socket;
public ClientThread( Socket socket ) {
System.out.println( "New client" );
_socket = socket;
setDaemon( true );
start();
}
@Override
public void run() {
try(
final OutputStream outputFromServer = _socket.getOutputStream();
final PrintWriter serverPrintOut = new PrintWriter(
new OutputStreamWriter( outputFromServer, "utf-8" ), true ))
{
serverPrintOut.println( "Welcome to time server" );
for(;;) {
final long elapsed = System.currentTimeMillis() - MyServer.StartTime;
serverPrintOut.println( elapsed );
Thread.sleep( 1000L );
}
}
catch( final InterruptedException ex) {/**/}
catch( final IOException e ) {
e.printStackTrace();
}
}
}
public class MyServer {
static Calendar startTime = Calendar.getInstance();
static long StartTime = System.currentTimeMillis();
public static void main( String[] args ) throws IOException {
try( ServerSocket serverSocket = new ServerSocket( 9991 )) {
for(;;) {
new ClientThread( serverSocket.accept());
}
}
}
}
客户端代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
public class MyClient {
public static void main( String[] args ) throws IOException {
try(
Socket socket = new Socket( args[0], 9991 );
BufferedReader br = new BufferedReader(
new InputStreamReader( socket.getInputStream(), "utf-8" )))
{
String line;
while(( line = br.readLine()) != null ) {
System.out.println( line );
}
}
}
}
输出,服务器端:
$ java -cp bin so.MyServer
New client
New client
输出,客户端:
$ java -cp bin so.MyClient localhost
Welcome to time server
3274
4274
5275
6275
7275
8276
9276
10276
11276
^C <---- End of first client
$ java -cp bin so.MyClient localhost
Welcome to time server
19838
20838
21838
^C <---- End of second client
添加回答
举报
