Javad网络编程实战初探之Socket编程

本文介绍Java网络编程的基础,通过Socket编程实现客户端与服务器间的通信。示例代码展示了如何创建服务器套接字监听连接,以及客户端如何请求连接并进行数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天带大家来学习下Java的网络编程实战。Socket编程又称之为套接字的编程,还是来看看代码吧。主要涉及到客户端和服务器端的编程,我们先来看看服务器端的编程.代码如下.

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author hackbase   初步的认识Java的网络编程
 *    Socket编程主要涉及到客户端和服务器端的编程,
 *    Java网络编程主要涉及到的就是套接字的编程.
 *    简单来说Socket编程涉及到套接字编程.Socket就是两台主机
 *    之间的连接的逻辑端点,端口号从0到65535  1-1024之间的端口
 *    被操作系统所占有.一般是不能使用的。一般选择大于这个
 *    范围的端口.
 *
 *
 *    socket编程整体流程
 *    Socket编程主要涉及到客户端和服务器端两个方面,
 *    首先是在服务器端创建一个服务器套接字(ServerSocket),
 *    并把它附加到一个端口上,服务器从这个端口监听连接。
 *    端口号的范围是0到65536,但是0到1024是为特权服务保留的端口号,
 *    我们可以选择任意一个当前没有被其他进程使用的端口。
 *
 * 客户端请求与服务器进行连接的时候,
 * 根据服务器的域名或者IP地址,加上端口号,打开一个套接字。
 * 当服务器接受连接后,服务器和客户端之间的通信就像输入输出流一样进行操作
 */
public class SocketServer {
    public static void main(String[] args) {

        //创建端口号
        int port =7000;

        //在端口上创建一个套接字
        try {
            ServerSocket  serversocket=new ServerSocket(port);
            //监听来自客户端的请求连接
            Socket socket=serversocket.accept();


            //分别创建数据的输入流和输出流.
            DataInputStream  dis=new DataInputStream(new BufferedInputStream(socket.getInputStream()));
            DataOutputStream  dos=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));

            do {
                double length=dis.readDouble();
                System.out.println("服务器收到的边长的数据为"+length);
                double result=length*length;
                dos.writeDouble(result);
                dos.flush();

            }while(dis.readInt()!=0);
                 socket.close();
                 serversocket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}

下面我们来看看客户端的编程,代码如下截图.

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

/**
 * @author hackbase  下面来编写客户端的代码程序.
 *
 */
public class Client {
    public static void main(String[] args) throws IOException {
        int port =7000;
        String host="localhost";
        //创建一个套接字,并将其连接到指定的端口.
        Socket socket=new Socket(host,port);

        DataInputStream  Dis=new DataInputStream(new BufferedInputStream(socket.getInputStream()));
        DataOutputStream Dos=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));

        //创建一个扫描器用于从控制套得到得到数据.
        Scanner sc=new Scanner(System.in);

        Boolean flag=false;
        while(!flag){
            System.out.println("输入正方形的边长.....");
            double length=sc.nextDouble();
            Dos.writeDouble(length);
            Dos.flush();

            double area=Dis.readDouble();

            System.out.println("服务器返回的面积为;"+area);
            while(true){
                System.out.println("继续计算码?(Y/n)");
                String str=sc.next();
                if(str.equalsIgnoreCase("N")){
                    Dos.writeInt(0);
                    Dos.flush();
                    flag=true;
                    break;
                }else if(str.equalsIgnoreCase("Y")){
                    Dos.writeInt(1);
                    Dos.flush();
                    break;

                }

            }


        }
        socket.close();
    }
}

代码难度不是很大,这里就不多介绍了,这里要注意,这里只是涉及到一个客户端连接到服务器的操作实例.在后面的博客里面涉及到多个客户端连接到一个服务器的实例来实现多人聊天的例子.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值