Java网络编程基础

来源:互联网 发布:php aes对称加密算法 编辑:程序博客网 时间:2024/06/05 04:28

第一步,构建服务器
步骤:
1、构建服务器端ServerSocket对象(Socket类扮演两种角色:a、当使用new构建一个Socket对象是意味着客户端需要向服务器端申请链接。b、当在服务器中使用accept方法获取是,表明获得一个客户端连接的连接信息
2、通过ServerSocket对象.accept方法取得连接。
3、通过流与客户端交互数据。

第二步,构建客户端
步骤:
1、构建Scoket对象(通过InetAddress.getByName(ip),端口号)获得)。
2、通过流与服务器进行数据交互。

以下是一个简单的服务器/客户端的实现。实现的具体功能是客户端发送信息给服务器,服务器在控制台打印客户端发来的信息
1、服务器

import java.io.DataInputStream;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class Server {    public static void main(String[] args)    {        try {            ServerSocket server = new ServerSocket(8989);            Socket socket = server.accept();            InputStream is = socket.getInputStream();            DataInputStream dis = new DataInputStream(is);            while(true)            {                String msg = dis.readUTF();                System.out.println(msg);                if("exit".equals(msg))                {                    break;                }            }            is.close();            dis.close();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
2、客户端
import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.Inet4Address;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;public class Client {    public static void main(String[] args)    {        try {            Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),8989);            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));//用BufferedReader读取控制台的输入信息            OutputStream os = socket.getOutputStream();//创建输出流            DataOutputStream dos = new DataOutputStream(os);            while(true)            {                String msg = reader.readLine();/从控制台读取一行                dos.writeUTF(msg);//将信息通过流发送给服务器                if("exit".equals(msg)){//如果输入"exit"则结束客户端                    break;                }            }            //关闭流            os.close();            dos.close();        } catch (UnknownHostException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
0 0
原创粉丝点击