Java与简单C/S架构笔记(201206更新)

Java与简单C/S架构笔记

C/S架构即客户端/服务端架构,这里用基于TCP通信的Java.net类 Socket和ServerSocket实现

Socket

Socket类即客户端套接字接口的实现,套接字是两台机器连接的端点。
创建Socket对象即向服务端发出请求,建立两者通信

Socket的其中两种构造器:

Socket conn = new Socket(InetAddress address, int port)
Socket(InetAddress host, int port, boolean stream)

客户端与服务端之间的信息传输是通过输入输出流来实现的,因此又有以下方法又来返回Socket的输入输出流:

OutputStream getOutputStream()
InputStream getInputStream()

注意:
当使用其他流进行操作时,此处以DataInputStream为例:

Socket conn = new Socket(xxx,xxx);
DataInputStream dis = new DataInputStream(conn.getInputStream);

应在外层new一个对应的转换流,ServerSocket同理

ServerSocket

ServerSocket类即服务器套接字接口的实现,服务器套接字 等待通过网络传入的请求,并基于请求进行操作。

ServerSocket的构造器之一:

//通过端口创建对象
ServerSocket(int port)

ServerSocket通过accept()方法侦听连接并接受,然后返回连接的Socket对象

Socket accept()

如此获得连接的Socket对象后,便可通过Socket对象的流进行操作

ServerSocket ss = new ServerSocket(xxxx);
//在端口xxxx侦听连接
ss.accept();

注意:
当accept没有侦听到对象时会一直阻塞

关于流的操作

数据多次写入时,将数据暂存到某个对象上,将所有数据转移到对象上后再将该对象写入输出流。
而不要使用输入流多次写入,这里我暂时遇到了无法解决的问题。例如:

String temp = null;
ResultSet rs = xxxx;
DataOutputStream dos = xxx;
while(rs.next()){
	if(temp == null){
		temp = rs.getString(xxx);
	}else{
		temp += rs.getString(xxx);
	}
}
dos.writeUTF(temp);
dos.flush();

参考:
Java网络编程–C/S架构
java远程操作数据库,c/s模式
Java API

猜你喜欢

转载自blog.csdn.net/weixin_43662405/article/details/110729311