实现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();
}
}
}