计网实验第二章:TCP与UDP实验

这篇具有很好参考价值的文章主要介绍了计网实验第二章:TCP与UDP实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TCP

计网实验第二章:TCP与UDP实验

1.服务器绑定端口号启动服务器欢迎socket。

2. 等待客户端发送请求。

3.等到客户端发送请求之后,服务器与客户端重新建立一个socket,但是客户端的目标端口不变。

计网实验第二章:TCP与UDP实验

java代码如下

客户端

客户端代码图解

计网实验第二章:TCP与UDP实验

import java.io.*;
import java.net.*;
class TCPClient {
    public static void main(String argv[]) throws Exception
    {
        String sentence;
        String modifiedSentence;
        BufferedReader inFromUser = new BufferedReader(
                new InputStreamReader(System.in));
        //开一个socket
        Socket clientSocket = new Socket("localhost", 6789);
        DataOutputStream outToServer = new DataOutputStream(
                clientSocket.getOutputStream());
        BufferedReader inFromServer =
                new BufferedReader(new InputStreamReader(
                        clientSocket.getInputStream()));
        sentence = inFromUser.readLine();
        //发送请求
        outToServer.writeBytes(sentence + '\n');
        //接受响应
        modifiedSentence = inFromServer.readLine();
        System.out.println("FROM SERVER: " +
            modifiedSentence);
        //关闭客户端
        clientSocket.close();
    }
}

服务端 

import java.io.*;
import java.net.*;
class TCPServer {

    public static void main(String argv[]) throws Exception
    {
        String clientSentence;
        String capitalizedSentence;
        //开一个socket用做于欢迎socket
        ServerSocket welcomeSocket = new ServerSocket
                (6789);
        while(true) {
            //接受客户端的请求
            Socket connectionSocket = welcomeSocket.
                    accept();
            BufferedReader inFromClient =
                    new BufferedReader(new InputStreamReader(
                            connectionSocket.getInputStream()));
            DataOutputStream outToClient =
                    new DataOutputStream(
                            connectionSocket.getOutputStream());
            //从客户端接受到信息
            clientSentence = inFromClient.readLine();
            //改变客户端发送的信息
            capitalizedSentence =
                    clientSentence.toUpperCase() + '\n';
            //发回给客户端
            outToClient.writeBytes(capitalizedSentence);
        }
    }
}

UDP 

计网实验第二章:TCP与UDP实验

1.udp的客户端可以比udp的服务端先开启

2.服务器绑定端口 

java代码如下:

客户端 

计网实验第二章:TCP与UDP实验文章来源地址https://www.toymoban.com/news/detail-514540.html

import java.io.*;
import java.net.*;
class UDPClient {
    public static void main(String args[]) throws Exception
    {
        BufferedReader inFromUser =
                new BufferedReader(new InputStreamReader
                        (System.in));
        //为客户端进程创建了一个门,但没有在两个进程之间创建管道
        DatagramSocket clientSocket = new DatagramSocket();
        //调用DNS查找
        InetAddress IPAddress =
                InetAddress.getByName("localhost");
        byte[] sendData = new byte[1024];
        byte[] receiveData = new byte[1024];
        String sentence = inFromUser.readLine();
        sendData = sentence.getBytes();
        //与TCP发送流不同,udp是打一个包发过去,这个就是udp的包
        //这一行构造数据包sendPacket,客户机将通过套接字将其弹出到网络中。
        // 这个包包括包中包含的数据、sendData、该数据的长度、服务器的IP地址和应用程序的端口号(我们将其设置为9876)。
        DatagramPacket sendPacket =
                new DatagramPacket(sendData, sendData.length,
                        IPAddress, 9876);
        clientSocket.send(sendPacket);
        //接受服务器响应包
        DatagramPacket receivePacket =
                new DatagramPacket(receiveData,
                        receiveData.length);
        clientSocket.receive(receivePacket);
        //将回复的包中的数据拿出来
        String modifiedSentence =
                new String(receivePacket.getData());
        System.out.println("FROM SERVER:" +
            modifiedSentence);
        //关闭客户端,释放资源
        clientSocket.close();
    }
}

 服务器

import java.io.*;
import java.net.*;
public class UDPServer {
    public static void main(String args[]) throws Exception
    {
        DatagramSocket serverSocket = new
                DatagramSocket(9876);
        byte[] receiveData = new byte[1024];
        byte[] sendData = new byte[1024];
        while(true)
        {
            //接受客户端发来的请求
            DatagramPacket receivePacket =
                    new DatagramPacket(receiveData,
                            receiveData.length);
            serverSocket.receive(receivePacket);
            //将客户端的请求的信息转为字符数组
            String sentence = new String(
                    receivePacket.getData());
            //从请求里拿到客户端IP地址
            InetAddress IPAddress =
                    receivePacket.getAddress();
            //拿到客户端端口
            int port = receivePacket.getPort();
            String capitalizedSentence =
                    sentence.toUpperCase();
            sendData = capitalizedSentence.getBytes();
            //将要返回的响应打包,里面需要客户端的IP地址,客户端端口
            DatagramPacket sendPacket =
                    new DatagramPacket(sendData,
                            sendData.length, IPAddress, port);
            //服务器发送响应包
            serverSocket.send(sendPacket);
        }
    }
}

到了这里,关于计网实验第二章:TCP与UDP实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ArduinoUNO实战-第二十二章-红外遥控实验

    Arduino基础入门篇25—红外遥控 Arduino与红外遥控握手 在日常生活中我们会接触到各式各样的遥控器,电视机、空调、机顶盒等都有专用的遥控器,很多智能手机也在软硬件上对红外遥控做了支持,可以集中遥控绝大部分家用电器。 当按下遥控器上某个按键,串口输出该按键的

    2024年02月16日
    浏览(33)
  • UNIX网络编程卷一 学习笔记 第二十二章 高级UDP套接字编程

    TCP是一个字节流协议,又使用滑动窗口,因此没有记录边界或发送者数据发送能力超过接收者接收能力之类的事情,但对于UDP,每个输入操作对应一个UDP数据报(一个记录),因此当收取的数据报大于引用的输入缓冲区时就有问题。 UDP是不可靠协议,但有些应用确实有理由使

    2024年02月12日
    浏览(47)
  • 第二章 OSI七层模型及TCP/IP四层模型

    第二章 OSI七层模型及TCP/IP四层模型 本章主要介绍了OSI七层分层的目的是什么以及各层次的功能,具体讲述了OSI分层与TCP/IP四层模型是什么关系,以及在分组网络中是如何传输的。 OSI七层网络:分成7层是从技术角度上去细分的。分层主要有如下功能: 1、各层之间是独立的。

    2024年01月16日
    浏览(32)
  • 《计算机网络-自顶向下》wireShark实验-第二章:http

    我们开始探索HTTP,方法是 下载一个非常简单的HTML文件 。非常短,并且 不包含嵌入的对象 。执行以下操作: 启动您的浏览器。 启动Wireshark数据包嗅探器,如Wireshark实验-入门所述(还没开始数据包捕获)。 在display-filter-specification窗口中输入“http”(只是字母,不含引号标

    2024年02月19日
    浏览(35)
  • 【云计算与虚拟化】第二章 实验一 VMware Workstation的使用

    实验一   vmware workstation的使用 安装Windows Server 2012 R2虚拟机,并激活 (计算机命名为:学号 + 姓名拼音的首字母) 2.在 Windows Server 2012 R2 的虚拟机中安装 VMTools 3.关机创建快照 (快照命名为:学号 + 姓名拼音的首字母) 4.通过启用共享文件夹的形式让虚拟机访问主机的文件

    2024年02月05日
    浏览(40)
  • 【云计算与虚拟化】第二章 实验二 Vmware Workstation 15的使用

    实验二   Vmware Workstation 15的使用 在上一实验的基础上,将两台虚拟机调节到在桥接模式下,配置相应的网络参数,实现虚拟机1和2能相互通信,虚拟机1和2能够ping通外网,虚拟机1和2能ping通物理机。 (截取虚拟网络编辑器中桥接的信息以及两台虚拟机调节到在桥接模式的

    2024年02月06日
    浏览(37)
  • 微机实验第二章:循环、分支程序和常用的DOS功能调用(B站)

    作为一名在校大学生,我将近期所学的知识进行总结。 一年之后我再看这些代码,我发现这些代码对于初学者十分友好。因此,我将这些代码分享给大家,希望大家能有所收获。如有不足,欢迎交流。 推荐可以看这位B站up主的视频学习汇编 B站up主 提示:以下是本篇文章正文

    2024年02月03日
    浏览(35)
  • 《凤凰架构》第二章——访问远程服务

    这章挺难的,感觉离我比较远,不太好懂,简单记录吧。 这章主要讲访问远程服务,主要对比了RPC和REST的区别,可以结合知乎上的文章《既然有 HTTP 请求,为什么还要用 RPC 调用?》 这篇文章进行理解。 而对于远程服务调用,它的内容不单单只有REST、RPC,还有像SOAP,WebS

    2024年02月11日
    浏览(34)
  • 《微服务架构设计模式》第二章

    软件架构的定义 看一下大佬是怎么说的: 计算机系统的软件架构是构建这个系统所需要的一组结构,包括软件元素、它们之间的关系以及两者的属性。 --Bass等著《Documenting Software Architectures:Views and Beyond》 这个定义将软件分解为元素和元素之间的关系两个部分,就像一辆汽车

    2024年02月09日
    浏览(31)
  • 第二章 Eureka服务注册与发现

    gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信)、数据库集群、分布式日志、系统监控链路追踪。 1. Eureka基础知识 什么是服务治理? 在传统的rpc远程调用框

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包