TCP通信,Java提供了2个类用来实现tcp通信程序:
1、java.net.Socket 创建Socket对象,用来建立和服务器的连接,发送请求,接收响应;
2、java.net.ServerSocket,创建ServerSocket对象,启动tcp服务程序;
1、客户端和服务器建立一条逻辑连接,连接种包含一个对象,一个IO对象;
2、客户端和服务器使用这个对象进行通信,通信数据不仅仅是字符,所以IO对象是字节流;
1、服务端使用accept方法获取客户端对象,明确和哪个客户端进行通信;
socket构造方法:
socket(String host,int port)创建一个流套接字,并将其连接到指定主机的指定端口
成员方法:
OutputStream getOutputStream()返回此套接字的输出流
inputStream getInputStream()返回此套接字的输入流
void close()关闭套接字
ServerSocket构造方法:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer1 {
public static void main(String[] args) throws IOException{
//创建服务器 serverSocket 对象,指定绑定端口后
ServerSocket serverSocket = new ServerSocket(8888);
//使用 serverSocket 引用,调用accept方法,进行侦听,获取客户端请求的 socket
Socket socket = serverSocket.accept();
//使用 Socket 对象中的 getInputStream 方法,获取网络字节输入流 InputStream 对象,
InputStream is = socket.getInputStream();
//使用 InputStream引用调用方法 read,读取客户端发送的数据流;
byte[] bytes = new byte[1024];
int len = is.read(bytes);
//打印获取的数据
System.out.println(new String(bytes, 0, len));
//使用 Socket 对象种的 getOutputStream 方法,获取网络字节输入流 OutputStream 对象,
OutputStream os = socket.getOutputStream();
//返回给客户端信息
os.write("收到信息".getBytes());
//释放资源
socket.close();
serverSocket.close();
}
}
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class TcpClient1 {
public static void main(String[] args) throws IOException{
//1、创建socket对象,连接指定服务器IP和Port
Socket socket = new Socket(InetAddress.getLocalHost(),8888);
//2、使用socket引用,调用getOutputStream方法,获取OutputStream对象,调用write方法写数据
socket.getOutputStream().write("你好".getBytes());
//3、使用OutputStream引用,调用OutputStream中的write方法,给服务器发数据
//os.write("你好".getBytes());
//4、使用socket引用,调用getInputStream方法,获取getInputStream对象
InputStream is = socket.getInputStream();
//5、使用InputStream引用,调用InputStream中的read方法,获取服务器返回的数据
byte[] bytes = new byte[1024];
int len = is.read(bytes);
System.out.println(new String(bytes,0,len));
//6、释放资源
socket.close();
}
}
原创文章,作者:wure,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/272493.html