1.如何利用Socket进行连接
TCP(协议需要深入研究 特点 三次握手 四次挥手)
基于字节型流执行操作
服务端ServerSocket
客户端Socket
2.如何利用流来进行通信
InputStream/OutputStream
InputStreamReader
BufferedReader/PrintWriter
package server;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
//服务器
public class Server {
public static void main(String[] args){
try{
//1.创建一个socket对象
ServerSocket server=new ServerSocket(8888);
//2.等待客户端过来连接
Socket socket= server.accept();//同意 接收
OutputStream os= socket.getOutputStream();//字节流
PrintWriter writer=new PrintWriter(os);//字符流
writer.println("连接上了");
writer.flush();
//服务端读取客户端消息
InputStream is= socket.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String value= br.readLine();
System.out.println(value);
}catch (Exception e){
e.printStackTrace();
}
}
}
package client;
import java.io.*;
import java.net.Socket;
//客户端
public class Client {
public static void main(String[] args){
try{
//1.主动发起访问(服务器在哪,服务期开放端口是多少)
Socket socket=new Socket("localhost",8888);
//如果socket对象成功创建出来,就代表与服务器连接成功了
InputStream is= socket.getInputStream();//字节流
InputStreamReader isr=new InputStreamReader(is);//字符流,但不能读取一行
BufferedReader br=new BufferedReader(isr);//可以读取一行的字符流
String value= br.readLine();//读取服务器发给我的消息
System.out.println(value);
//客户端回写一个消息
OutputStream os= socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
pw.println("我知道连接上了");
pw.flush();
}catch (Exception e){
e.printStackTrace();
}
}
}