TCP:
1.TCP在通讯的时候在client和server两端各建立一个Socket,从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。
2.java对基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。
3.java为客户提供了Socket类,为服务器端提供了ServerSocket类。
TCP:客户端
1.创建客户端的Socket对象
2.引入输出流来写数据
3.如果想要的到服务端的反馈 需要创建byte数组用来接收服务端的反馈
4.释放资源
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Cilent {
public static void main(String[] args) throws IOException {
//创建Socket对象 写入地址和端口号
Socket s = new Socket("127.0.0.1",8876);
//创建要写入的数据
String str = "努力学java";
//通过输出流来进行数据的写入
OutputStream os = s.getOutputStream();
os.write(str.getBytes());
//引入输入流用来接收服务端发来的数据
InputStream is = s.getInputStream();
//使用一个byte的数组作为一个缓冲区
byte[] b = new byte[1024];
//读操作的返回值是int类型 所以定义一个int类型变量
int ch =0;
//read(byte[] b) 这个方法是先规定一个数组长度,将这个流中的字节缓冲到数组b中,
// 返回的这个数组中的字节个数,这个缓冲区没有满的话,则返回真实的字节个数,到未尾时都返回-1
while((ch = is.read(b))!=-1){
System.out.println(new String(b,0,ch));
}
//释放资源
is.close();
s.close();
os.close();
}
}
TCP:服务端
1.创建服务端的Socket对象(ServerSocket )ServerSocket(int port)
2.监听客户端连接,返回一个Socket对象 Socket accept()
3.获取输入流,读取客户端发来的数据,并显示在控制台上
4.释放资源
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
//创建Socket对象
ServerSocket ss = new ServerSocket(8876);
//ServerSocket的accept方法返回值类型是Socket
Socket s = ss.accept();
//使用一个byte的数组作为一个缓冲区
byte[] bytes = new byte[1024];
//输入流用来接收数据
InputStream is = s.getInputStream();
//读取数据
int ch = is.read(bytes);
//通过创建字符串对象来进行数据的输出
System.out.println("接收到的数据是:"+new String(bytes,0,ch));
//创建输出流用来给客户端反馈信息
OutputStream os = s.getOutputStream();
os.write("接收到了,感谢".getBytes());
//释放资源
is.close();
os.close();
ss.close();
s.close();
}
}