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();
    }
}

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

内容概要:文章介绍了DeepSeek在国内智能问数(smart querying over data)领域的实战应用。DeepSeek是一款国内研发的开源大语言模型(LLM),具备强大的中文理解、推理和生成能力,尤其适用于企业中文环境下的智能问答、知识检索等。它具有数据可控性强的特点,可以自部署、私有化,支持结合企业内部数据打造定制化智能问数系统。智能问数是指用户通过自然语言提问,系统基于结构化或非结构化数据自动生成精准答案。DeepSeek在此过程中负责问题理解、查询生成、多轮对话和答案解释等核心环节。文章还详细展示了从问题理解、查询生成到答案生成的具体步骤,并介绍了关键技术如RAG、Schema-aware prompt等的应用。最后,文章通过多个行业案例说明了DeepSeek的实际应用效果,显著降低了数据使用的门槛。 适合人群:从事数据分析、企业信息化建设的相关从业人员,尤其是对智能化数据处理感兴趣的业务和技术人员。 使用场景及目标:①帮助业务人员通过自然语言直接获取数据洞察;②降低传统BI工具的操作难度,提高数据分析效率;③为技术团队提供智能问数系统的架构设计和技术实现参考。 阅读建议:此资源不仅涵盖了DeepSeek的技术细节,还提供了丰富的实战案例,建议读者结合自身业务场景,重点关注DeepSeek在不同行业的应用方式及其带来的价值。对于希望深入了解技术实现的读者,可以进一步探索Prompt工程、RAG接入等方面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值