tcp连接
tcpclient
客户端程序
package tcpudp; import java.net.*; import java.util.Scanner; import java.io.*; public class TCPClient { public static void main (String args[]) { // arguments supply message and hostname Socket client = null; int serverPort = 20005; try{ client = new Socket("127.0.0.1", serverPort); //BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); Scanner input = new Scanner(System.in); //获取Socket的输出流,用来发送数据到服务端 PrintStream out = new PrintStream(client.getOutputStream()); //获取Socket的输入流,用来接收从服务端发送过来的数据 BufferedReader buf = new BufferedReader(new InputStreamReader(client.getInputStream())); boolean flag = true; while(flag){ System.out.print("输入信息:"); //String str = input.readLine(); String str = input.nextLine(); //发送数据到服务端 out.println(str); if("bye".equals(str)){ flag = false; }else{ try{ //从服务器端接收数据有个时间限制(系统自设,也可以自己设置),超过了这个时间,便会抛出该异常 String echo = buf.readLine(); System.out.println(echo); }catch(SocketTimeoutException e){ System.out.println("Time out, No response"); } } } input.close(); // if(client != null){ // //如果构造函数建立起了连接,则关闭套接字,如果没有建立起连接,自然不用关闭 // client.close(); //只关闭socket,其关联的输入输出流也会被关闭 // } }catch (IOException e){System.out.println("readline:"+e.getMessage()); }finally{ if(client!=null) try {client.close(); }catch (IOException e){System.out.println("close:"+e.getMessage());}} } }
package tcpudp;
import java.net.*;
import java.io.*;
public class TCPServer {
public static void main (String args[]) { System.out.println("Server is waiting...."); try{ // the sharing port, the value must more than 65536 int serverPort = 20005; // the listenSocket represent a port of server ServerSocket listenSocket = new ServerSocket(serverPort); while(true) { //the listenSocket represent a port of client Socket clientSocket = listenSocket.accept(); ServerThread serverThread = new ServerThread(clientSocket); serverThread.run(); } } catch(IOException e){ System.out.println("Listen socket:"+e.getMessage());} }
}
class ServerThread implements Runnable {
private Socket client = null; public ServerThread(Socket client){ this.client = client; } public void run() { try{ //获取Socket的输出流,用来向客户端发送数据 PrintStream out = new PrintStream(client.getOutputStream()); //获取Socket的输入流,用来接收从客户端发送过来的数据 BufferedReader buf = new BufferedReader(new InputStreamReader(client.getInputStream())); boolean flag =true; while(flag){ //接收从客户端发送过来的数据 String str = buf.readLine(); if(str == null || "".equals(str)){ flag = false; }else{ if("bye".equals(str)){ flag = false; }else{ System.out.println("Receiving is : "+ str); out.println("echo:" + str); } } } out.close(); client.close(); }catch(Exception e){ e.printStackTrace(); } }
}