网络编程的基本模型就是客户机和服务器模型,简单的说就是两个进程之间的相互通信,在通信过程中,服务器端要提供一个固定的端口,供其它客户机访问,通信可以是0-65535之间,但由于TCP/IP协议占了1024个,所以我们可用的只能是1024个之后的端口。
在网络编程中和I/O操作是息息相关的,网络的底层操作是连续的数据流,还是要利用I/O操作来实现,I/O操作有字节流和字符流,还提供了一个缓冲来用于数据的读写。输入流InputStreamReader,输出流OutputStream,一个缓冲是BufferReader。
首先在服务器端,我们要创建一个 服务器端socket,定义一个端口:
ServerSocket server = new ServerSocket(8888);
其次要创建一个接收客户端的socket.
Socketclient = server.accept();
再者要创建一个缓冲来接收客户端传来的数据:
BufferedReader br = new BufferedReader(newInputStreamReader(client.getInputStream));
再创建一个输出向客户端发送数据:
PrintWriterout = new PrintWriter(client.getOutputStream());
读取客户端传来的数据,并输出到界面:
Stringline = br.readLine();System.out.println(line);
向客户端输出数据:
out.println(“thereare some server data”);
如果通信结束则关闭client:client.close();
对于客户端则是先得到服务器端的地址来创建socket:
Socketserver = new Socket(IP,PORT);
再创建一个接受服务器端数据的缓冲:
BufferedReader br = new BufferedReader(newInputStreamReader(server.getInputStream()));
然后创建一个发送数据到服务器的输出流:
PrintWriter out = newPrintWriter(server.getOutputStream);
最后创建一个从本机输入的缓冲:
BufferedReader in = new BufferedReader(newInputStreamReader(System.in));
这样可以读取服务器的数据:
String line = br.readline();
也可以向服务器发送数据:
out.println(in.readline());
如果通信结束,则关闭socket:server.close();