服务器端Socket程序

package com.aaa.servet;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.ServerSocket;//导入java.net包,用于网络通讯

import java.net.Socket;

public class ServetSocketTest {

public static void main(String[] args) {

System.out.println("...启动服务器...");

//1.初始化服务端Socket并绑定端口为8888

try {

ServerSocket serverSocket=new ServerSocket(8888);//需要添加try/catch块

//2.等待客户端的连接

Socket socket=serverSocket.accept();

//3.获取输入流,通过socket对象流,传递给缓冲字符流进行读取;

BufferedReader bufferReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));

//4.读取一行数据;

String str=bufferReader.readLine();

//5.输出打印

System.out.println(str);

} catch (IOException e) {

e.printStackTrace();

}

}

}

  1. 客户端程度代码

package com.aaa.clicent;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.net.Socket;

import java.net.UnknownHostException;

public class ClientSocket {

public static void main(String[] args) {

//1.创建socket对象,建立到服务i端的连接;

try {

Socket socket=new Socket("127.0.0.1",8888);

//2.通过缓冲输出流,包装下socket对象的输出字节流,进行写操作;

BufferedWriter bufferWriter=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

//3.构造字符串,写进去

String str="你是我的小心肝";

bufferWriter.write(str);

//3.2还需要将缓冲中的内容放到socket

bufferWriter.flush();

//4.注意一定要有关闭连接;

socket.shutdownOutput();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

  1. 案例效果:

5.现在需要继续升级,如何循环!!!可以多个循环;

服务器端修改为:

客户端修改为:

--------UDP Socket连接---

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class UDPServer {
    public static void main(String[] args) {
        //1.创建服务器端的DatagramSocket数据包,
        try {
            DatagramSocket datagramSocket=new DatagramSocket(8800);
            //2.创建数据报,用于接受用户传送过来的数据;存放于字节数组;
            byte[]bytes=new byte[1024];
            DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length);
            System.out.println("*****服务器端已经启动****");
            //使用receive方法接受;
            datagramSocket.receive(datagramPacket);
            //4.读取数据;
            String info=new String(bytes,0,datagramPacket.getLength());
            //5.输出信息;
            System.out.println("服务器,客户端信息为:"+info);
            //升级,服务器端响应客户端;
            InetAddress address=datagramPacket.getAddress();
            int port=datagramPacket.getPort();
            byte[]sinfo="欢迎您".getBytes();
            //升级2.创建数据报,包含socket信息;
            DatagramPacket packet=new DatagramPacket(sinfo,sinfo.length,address,port);
            // 升级3;
            datagramSocket.send(packet);
            //关闭资源;
            datagramSocket.close();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

}
}

==客户端

import java.io.IOException;
import java.net.*;

public class UDPClient {
    public static void main(String[] args) {
        //1.定义服务器的地址、端口号、数据;
        try {
            InetAddress address=InetAddress.getByName("localhost");
            int port=8800;
            byte[]data="用户名:admin,密码:123".getBytes();
            //2.创建数据报,包含发送的数据信息,可以使用带有4个参数的方法;
            DatagramPacket datagramPacket=new DatagramPacket(data,data.length,address,port);
            //3.创建DatagramSocket对象;
            DatagramSocket datagramSocket=new DatagramSocket();
            //4.向服务器发送数据;
            datagramSocket.send(datagramPacket);
            升级
            byte[]data2=new byte[1024];
            DatagramPacket packet2=new DatagramPacket(data2,data2.length);
            //2.接受服务器响应的数据 ;
            datagramSocket.receive(packet2);
            //3.读取数据;
            String reply=new String(data2,0,packet2.getLength());
            System.out.println("我是客户端,服务器端说:"+reply);
            //4.关闭资源;
            datagramSocket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

分布式服务器客户端实验相关推荐

  1. 实验:PPPoE服务器/客户端基础配置

    大家使用ADSL上网,我们与电话局之间的物理连接为:网线----电话线-----网线,建立链路使用的技术是PPPoE(PPP帧封装在以太网帧中,PPoE为服务器/客户端模式运行).今天的实验将本地路由 ...

  2. go使用grpc实现异步_(python、go)基于ETCD的gRPC分布式服务器实现详解

    作者:Zarten知乎专栏:框架工具篇详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 ! 1-概述 gRPC框架是一个 ...

  3. Linux邮件服务器搭建实验

    Linux邮件服务器搭建实验 前言 本文重点在于后面的搭建过程,前面会简单介绍邮件服务原理与工作流程,如果有什么错误或遗漏的地方,欢迎大家指正批评,谢谢. 基本理论说明 电子邮件服务器是处理邮件交换的 ...

  4. 基于Domoticz智能家居系统(十四)用ESP8266做MQTT客户端实验

    基于Domoticz智能家居系统(十四)用ESP8266做MQTT客户端实验 用ESP8266做MQTT客户端 一些前期的准备 第一步 设置ESP8266开发板的BSP的搜索引擎链接 第二步 下载安装 ...

  5. 北理计算机网络实验报告,北京理工大学计算机网络实践ftp客户端实验报告.doc...

    北京理工大学计算机网络实践ftp客户端实验报告.doc 实验五FTP客户端程序 实验目的 文件传送协议FTP是Internet中广泛使用的服务协议之一,FTP协议是客 户/服务器之间进行文件传递的协议 ...

  6. 分布式服务器框架之搭建C#+MongoDB+Redis初步

    后面为了学习准备搭建一个分部署的游戏服务器,还有一套基于Unity的客户端轻量级框架.架构图后面补上,用CSDN记录一下自己的开发笔记. 游戏服务器主要分成了四个库(Dll).三个逻辑服务器.一个We ...

  7. 逆向链接服务器(分布式服务器之前的协调通信,同步,消息的转发)

    先做个对比:卓越版本的分布式构架,相对于之前的版本旗舰.荣耀.大众.经典.6603等版本.在分布式上做了优化,更为可靠,高效,安全. 1. 采用websocket通信,更为安全可靠,同时可以和后台直接 ...

  8. 分布式服务器架构下的3v3团队对抗游戏

    [Warning] 本仓库作为本人的毕设课题,主要是初学者的学习/实践,谨慎用于正式用途. Github仓库链接:https://github.com/ZerlenZhang/distributed- ...

  9. 【正点原子FPGA连载】 第三十二章基于lwip的TCP服务器性能测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    第三十二章基于lwip的TCP服务器性能测试实验 上一章的lwip Echo Server实验让我们对lwip有一个基本的了解,而Echo Server是基于TCP协议的.TCP协议是为了在不可靠的互 ...

最新文章

  1. 线性回归算法原理简介
  2. TensorRT加速 ——NVIDIA终端AI芯片加速用,可以直接利用caffe或TensorFlow生成的模型来predict(inference)...
  3. 【控制】《自动控制原理》胡寿松老师-第1章-自动控制的一般概念
  4. drawroundrect java_Canvas中drawRoundRect()方法介绍
  5. rowmapper_Spring Integration Jdbc RowMapper示例
  6. Android.os.SystemClock
  7. 第2章 转动眼珠的圆脸(《Python趣味创意编程》教学视频)
  8. MySQL数据库常见存储引擎(一)
  9. 寻找链表中值域最小的节点并移到链表的最前面
  10. 利用JQuery在动态页面的倒计时器
  11. mysql求和 子查询_MySQL:子查询中的值总和
  12. 获取点击按钮的元素_Web API - DOM元素属性操作
  13. 解决“访问 IIS 元数据库失败”的方法
  14. 校园网如何使用IPv6
  15. Elasticsearch-Kibana 8.3.2 集群安装搭建-Linux
  16. ISO认证是什么?| ISO体系认证办理
  17. html 页眉选项卡,步骤如下: (1)在插入选项卡的页眉和页脚选项组中单击【页眉】按钮...
  18. 这次彻底读透 Redis
  19. python研究背景和意义_一研究背景和意义
  20. c语言运算符 4,C语言运算符

热门文章

  1. dart系列之:dart类的扩展
  2. Leet Code OJ 118. Pascal's Triangle [Difficulty: Easy]
  3. 未封装的扩展程序是什么意思_Android漏洞挖掘第三期:客户端完整性未校验
  4. C++ vector 使用详解
  5. 05.doc_delete操作
  6. 《大数据日知录:架构与算法》前言
  7. [leetcode] 3.无重复字符的最长子串
  8. crontab 每5分钟_Crontab安装步骤和命令使用详细解说
  9. python笔记之序列(tuple的基本使用和常用操作)
  10. 怎样用c语言写超市管理程序,C语言超市收银管理系统实现程序.doc