随笔 - 632  文章 - 17  评论 - 54  阅读 - 93万

JAVA Socket通信(包含服务端和客户端)

实例上有足够的注释我在这里就不再多说了,如果有疑问可以给我回复信息。

客户端:

复制代码
package com.socket.demo;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;

/**
 * 简单的数据通信客户端
 * @author USER
 *
 */
public class Client{
    private Socket socket;
    private DataOutputStream out;
    private DataInputStream in;
    public Client(){
        try{
            socket=new Socket(InetAddress.getLocalHost(),20000);  //建立连接server之网络平台socket

            out=new DataOutputStream(socket.getOutputStream());          //建立网络输出串流对象os
            out.writeUTF(getMsg());                                        //输出讯息传往server

            in=new DataInputStream(socket.getInputStream());            //建立网络输入串流对象is
            System.out.println("message:"+in.readUTF());             //印出msgin内容
            socket.close();//关闭连接                                             //关闭平台socket
        }
        catch(IOException e){                                           //网络连接例外处理执行区
            System.out.println(e.toString());
            System.exit(1);
        }
    }
    /**
     * 从键盘上录入数据并发送至服务端
     * @return
     */
    private String getMsg(){
        DataInputStream inputStream = new DataInputStream(System.in);
        try {
            return inputStream.readUTF();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 程序的入口main方法
     * @param args
     */
    public static void main(String args[]){
        new Client();
    }
}
复制代码


服务器端:

复制代码
package com.socket.demo;
import java.net.*;
import java.io.*;
import java.util.*;

/**
 * 服务器端
 * @author USER
 *
 */
public class Server{
    
    private ServerSocket SS;
    private DataOutputStream out;
    private DataInputStream in;
    private Socket socket;

    public Server(){
        try{
            SS=new ServerSocket(20000);//创建服务Socket并指定端口号
            System.out.println("Server created.\nWaiting...");

            while(true){
                socket=SS.accept();//接收客户单的请求
                System.out.println("connected form clinet"+socket.getInetAddress().getHostAddress());//打印出客户端主机地址
                System.out.println("clinet's name:"+socket.getInetAddress().getHostName());//打印客户端主机名称
                System.out.println("date:"+new Date());//打印时间
                
                in=new DataInputStream(socket.getInputStream());//输入流
                /*打印出客户端输入的信息*/
                System.out.println("message:"+in.readUTF());

                out=new DataOutputStream(socket.getOutputStream());//输出流
                out.writeUTF("服务器端数据:"+in.readUTF());//将输入的信息从服务器端再返回给客户端
            }
        }
        catch(IOException e) {
            System.out.println(e.toString());
            System.exit(1);
        }
    }
    
    public static void main(String args[]){
        new Server();//启动服务器端
    }
}
复制代码

 

posted on   飘杨......  阅读(235)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示