使用套接字Socked实现网络通讯(网络编程)

来源:互联网 发布:e店宝软件打不开 编辑:程序博客网 时间:2024/06/06 00:53

网络编程是一门很流行,也是很基本的技术,我们一般直接使用框架来实现网络编程,很少会直接写底层的通讯代码,我们有必要知道客户端究竟是怎么样服务器进行通讯的。我们来看一个简单的实例,就是客户端请求的时候,服务器把时间发到客户端。

第一步:编写服务器端代码。

import java.io.IOException;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Date;//服务器public class DateServer {public final static int portNumber = 4219;  //端口号public DateServer() throws IOException {//创建绑定到特定端口的服务器套接字ServerSocket serverSocket = new ServerSocket(portNumber);while (true) {System.out.println("Waiting for a client");//侦听并接受到此套接字的连接Socket socket = serverSocket.accept();  System.out.println("Got a client, send a message");OutputStreamWriter out = new OutputStreamWriter(socket.getOutputStream());String message = "Current date and time is " + new Date() + "\n";out.write(message);out.close();}}public static void main(String[] args) {try {DateServer dateServer = new DateServer();}catch(Exception e) {e.printStackTrace();}}}
第二步:编写客户端代码,打印服务器的时间。

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.Reader;import java.net.InetAddress;import java.net.Socket;//客户机public class DateClient {public final static int portNumber = 4219;  //端口号public DateClient() throws IOException {//创建一个流套接字并将其连接到指定 IP 地址的指定端口号Socket socket = new Socket(InetAddress.getLocalHost() ,portNumber);//返回此套接字的输入流Reader reader = new InputStreamReader(socket.getInputStream());BufferedReader input = new BufferedReader(reader);System.out.println("message is '" + input.readLine() + "'");}public static void main(String[] args) {try {DateClient dateClient = new DateClient();}catch(Exception e) {e.printStackTrace();}}}
总结:套接字是网络通讯的必要部分,套接字由ip地址和端口号组成,通过套接字也可以得到输入流和输出流。运行程序顺序为:先运行服务器端代码,然后运行客户端代码。


0 0
原创粉丝点击