Java基础项目-Socket通信(Java学习笔记)

利用Scoket实现局域网通信

//服务端
package org.example;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/**
 * @author L葵乄阳S
 * @version 1.0
 * @description: TODO
 * @date 2023/5/22 15:22
 * @PROJECT_NAME JavaFoundation
 * @NAME ServerChat.java
 */

// 服务器端
public class ServerChat {
//    1.定义端口号
    private int port =8888;
//    初始化服务端端口号
    public ServerChat(int port){
        this.port=port;
    }
    public ServerChat(){

    }
//    3.定义聊天方法
    public void service(){
        try {
            ServerSocket socket = new ServerSocket(port);
//            服务器接收客户端
            System.out.println("等待客户端连接...");
            Socket socket1 = socket.accept();
            System.out.println("一个客户端已连接!");
//            8.服务端接收客户端发送过来的数据
            DataInputStream in = new DataInputStream(socket1.getInputStream());
            DataOutputStream out = new DataOutputStream(socket1.getOutputStream());
            Scanner scanner = new Scanner(System.in);
//            9.添加循环实现服务端反复读取客户端发送过来的数据
            while (true){
//                10.编写发送的数据
                System.out.println("请输入");
                String send = scanner.nextLine();
//                11.将数据发送给服务端
                out.writeUTF("服务端说:"+send);
//                10.读取客户端发送过来的数据
                String accept=in.readUTF();
//                11.输出内容
                System.out.println(accept);
            }
        } catch (IOException e) {
//            5.输出异常表示连接失败
            System.out.println("连接客户端失败!");
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        new ServerChat().service();
    }
}

//客户端
package org.example;

import javax.swing.*;
import javax.xml.crypto.Data;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;

/**
 * @author L葵乄阳S
 * @version 1.0
 * @description: TODO
 * @date 2023/5/22 15:23
 * @PROJECT_NAME JavaFoundation
 * @NAME ClientChat.java
 */
// 客户端
public class ClientChat extends JFrame {
    public ClientChat(){

    }
//    1.定义ip地址,唯一标识网络中的计算机,如果是本地连本地,可以使用localhost
    private String host ="localhost";
//    2.定义端口号 唯一标识计算机中某一个程序的编号
    private int port=8888;
//    3.利用构造方法初始化参数
    public ClientChat(String host,int port){
        this.host=host;
        this.port=port;
    }
//    4.创建聊天方法
    public void chat(){
//       5. 连接服务器
        try {
            Socket socket = new Socket(host,port);
            System.out.println("连接成功!");
//            编写往服务端发送数据
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
            Scanner scanner = new Scanner(System.in);
            DataInputStream in = new DataInputStream(socket.getInputStream());

//            9.添加循环实现多次发送
            while (true){
//                10.编写发送的数据
                System.out.println("请输入");
                String send = scanner.nextLine();
//                11.将数据发送给服务端
                out.writeUTF("客户端说:"+send);

//                10.读取客户端发送过来的数据
                String accept=in.readUTF();
//                11.输出内容
                System.out.println(accept);
            }
        } catch (IOException e) {
//            6.捕获异常 表示一旦出错,将错误数据,提示连接失败
            System.out.println("连接失败!");
            throw new RuntimeException(e);
        }

    }
//    7.添加启动主程序
public static void main(String[] args) {
    new ClientChat().chat();
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值