今天主要学习一点基于socket通信的java网络编程的基本原理和例子:

   要想实现网络中的通信我们需要借助socket,即我们需要知道IP地址和应用进程的端口号,再利用相关的协议、借助物理介质的传送,这就是实现网络传输的基本。

   所以,对于网络编程而言,socket起着关键作用,我们直接看下面的代码,分别是服务器端和客户端的程序,这是最简单、单线程的通讯的网络编程的例子,但是它却体现了基本的原理。

package SocketTest;/* * 服务器端程序 */import java.net.*;import java.io.*;import java.util.Scanner;public class MyServer{    public static void main(String[] args) throws Exception{    // 启动一个服务端 端口号:0-65535 1024以下不建议使用。        System.out.println("*********服务器***********");        ServerSocket ss = new ServerSocket(8899);        // 这是一个阻塞的操作,等待客户端连接        Socket s = ss.accept();        System.out.println("一个客户端连接上来了");        //利用包装流实现听筒        InputStream is = s.getInputStream();        InputStreamReader isr=new InputStreamReader(is);        BufferedReader br = new BufferedReader(isr);        //利用包装流实现话筒        OutputStream os = s.getOutputStream();        PrintStream ps = new PrintStream(os);                                                  //定义一个Boolean型的标志位,可以使while(true)循环骗过编译器        boolean flag = true;        Scanner scan = new Scanner(System.in);        while(flag){            String str = br.readLine();//听话            System.out.println("客户端说:"+str);            ps.println(scan.next());// 说话                                                      }        //记得关闭包装流和socket        s.close();        br.close();        ps.close();        ss.close();    }}
package SocketTest;/* * 客户端 */import java.net.*;import java.io.*;import java.util.Scanner;public class MyClient {    public static void main(String[] args) throws Exception{    //  启动一个客户端。    System.out.println("*********客户端***********");        Socket s = new Socket("127.0.0.1",8899);        //包装流:话筒        OutputStream os = s.getOutputStream();        PrintStream ps = new PrintStream(os);              // 输入流:听筒        InputStream is = s.getInputStream();        BufferedReader br = new BufferedReader(new InputStreamReader(is));                                                      boolean flag = true;        Scanner scan = new Scanner(System.in);        while(flag){            ps.println(scan.next());            System.out.println("服务器说:"+br.readLine());        }                ps.close();        br.close();        os.close();        s.close();    }}

接下来我们运行这两个程序,注意:一定要先运行服务器端来监听等待客户端的连接,再运行客户端。

运行结果:

服务器

客户端:

   以上就是今天要写的一点内容,你学会了吗?努力学习哦!