TCP
2019-07-09 22:33 更新
TCP实现服务端和客户端简单的通讯: 服务端接收到客户端的连接后向客户端发送字符串,客户端接收字符串并打印。
1.http是应用层协议,其底层传输协议是tcp协议,因此tcp服务端可以通过浏览器访问。但如果使用浏览器访问服务器http://localhost:8888时,会发生错误,这是因为http包装了TCP协议。
2.与UDP不同的是客户端使用的端口系统自动分配。
3.Socket是服务端和客户端建立的管道,可以将管道看成中介者,服务端和客户端都是和中介者打交道,不直接和对方打交道,这样实现了访问方式的统一。
1.服务端:
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 1.创建服务器 指定端口new ServerSocket(int port)
* 2.接受客户端连接 阻塞式
* 3.发送数据
*/
public class MyServer {
public static void main(String[] args) throws IOException {
//1.创建服务器 指定端口new ServerSocket(int port)
ServerSocket server = new ServerSocket(8888);
//2.接受客户端连接 阻塞式
Socket socket = server.accept();
System.out.println("一个客户建立连接。");
//3.发送数据
/*BufferedWriter bWriter = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
bWriter.write("hello你好!");
bWriter.newLine();
bWriter.flush();*/
//另一种方式发送数据:
DataOutputStream dStream = new DataOutputStream(socket.getOutputStream());
dStream.writeUTF("hello你好!");
dStream.flush();
//4.关闭
// bWriter.close();
dStream.close();
socket.close();
server.close();
}
}
2.客户端:
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
/**
* 1.创建客户端 必须指定服务器+端口 此时就会连接
* 2.读取数据
*/
public class MyClient {
public static void main(String[] args) throws IOException {
//1.创建客户端 必须指定服务器+端口 此时就会连接
Socket client = new Socket("localhost", 8888);
//2.读取数据
/*BufferedReader bReader = new BufferedReader(
new InputStreamReader(client.getInputStream()));
//注意:bReader.readLine()需要行的结束符,如:"\r\n",
//也可以通过bWriter.newLine();创建行的结束符。
System.out.println(bReader.readLine());*/
//另一种读取数据方式:
DataInputStream dStream = new DataInputStream(client.getInputStream());
System.out.println(dStream.readUTF());
//3.关闭
// bReader.close();
dStream.close();
client.close();
}
}
以上内容是否对您有帮助:
← UDP
更多建议: