基于TCP: 面向连接 安全可靠 效率低 , 类似于打电话
一.面向连接: 请求响应 Request ---Response
二.Socket编程
1.服务器: ServerSocket
2.客户端:Socket
Server.java
package com.kennosaur.net.tcp.socket;
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 必须先启动服务器,后连接客户端
* 1.创建服务器,指定端口 ServerSocket(int port)
* 2.接收客户端的链接
* 3.发送数据+接收数据
* @author Administrator
*
*/
public class Server {
public static void main(String[] args) throws IOException {
//1.创建服务器,指定端口 ServerSocket(int port)
ServerSocket server = new ServerSocket(8888);
//2.接收客户端的链接 阻塞式
Socket socket =server.accept();
System.out.println("一个客户端建立连接");
//3.发送数据
String msg = "欢迎使用";
//输出流
/*
BufferedWriter bw=new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
bw.write(msg);
bw.newLine(); //Connection reset
bw.flush();
*/
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF(msg);
dos.flush();
}
}
Client.java
package com.kennosaur.net.tcp.socket;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 1.创建客户端 必须指定服务器+端口 此时就在连接
* Socket(String host, int port)
* 2.接收数据+发送数据
*
* @author Administrator
*
*/
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
//1.创建客户端 必须指定服务器+端口 此时就在连接
Socket client = new Socket("localhost", 8888);
//2.接收数据
/*
BufferedReader br = new BufferedReader(
new InputStreamReader(client.getInputStream()));
String echo = br.readLine(); //Connection reset 阻塞式方法
System.out.println(echo);
*/
DataInputStream dis = new DataInputStream(client.getInputStream());
String echo = dis.readUTF();
System.out.println(echo);
}
}