實現TCP程序,須要編寫服務器端和客戶端,java API爲咱們提供了java.net包 ,爲網絡應用程序提供類。java
ServerSocket 此類實現服務器套接字服務器
Socket:此類實現客戶端套接字網絡
TCP程序最簡單的例子:Echosocket
(服務器端)EchoServerDemo.java.net
package ScoketDemo;server
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;get
public class EchoServerDemo {io
public static void main(String[] args) {
//建立一個服務器端口的Scoket(1024-65535)
try {
ServerSocket server = new ServerSocket(6666);
//等待客戶端鏈接,形成阻塞
System.out.println("服務器已啓動,正在等待客戶端鏈接");
Socket socket = server.accept();
System.out.println("服務器鏈接成功"+server.getInetAddress().getHostAddress());
//經過輸入流讀取客戶端發送的消息
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String info = br.readLine();
System.out.println(info);
//獲取輸出流,向客戶端返回原來讀取的消息
PrintStream ps = new PrintStream(
new BufferedOutputStream(socket.getOutputStream()));
ps.println("echo:"+info);
ps.flush();
ps.close();
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}class
}
import
(客戶端)EchoClientDemo.java
package ScoketDemo;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class EchoClientDemo {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost",6666);
//獲取socket的輸入輸出流
PrintStream ps = new PrintStream(new BufferedOutputStream(socket.getOutputStream()));
BufferedReader br =new BufferedReader(new InputStreamReader(socket.getInputStream()));
//經過輸出流向服務器發送 hello,my name is dashabi
ps.println("hello,my name is dashabi");
ps.flush();
//經過輸入流讀取服務器發來的消息
String info = br.readLine();
System.out.println(info);
ps.close();
br.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}