最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

基于TCP and UDP的socket编程

来源:动视网 责编:小OO 时间:2025-10-01 20:57:50
文档

基于TCP and UDP的socket编程

天津理工大学实验报告学院(系)名称:计算机与通信工程学院姓名刘强学号20126***专业计算机科学与技术(中加)班级教学2班实验项目基于TCPandUDP的socket编程课程名称计算机网络课程代码0662016实验时间2015年4月30日第7、8节实验地点7-215批改意见成绩"教师签字:(一)实验目的:熟悉和掌握socket编程的基本理论和方法。掌握基于TCP和UDP的工作原理以及Socket编程的一般方法,能够编写简单的网络应用程序。(二)实验环境:软件环境:Windows2000/XP
推荐度:
导读天津理工大学实验报告学院(系)名称:计算机与通信工程学院姓名刘强学号20126***专业计算机科学与技术(中加)班级教学2班实验项目基于TCPandUDP的socket编程课程名称计算机网络课程代码0662016实验时间2015年4月30日第7、8节实验地点7-215批改意见成绩"教师签字:(一)实验目的:熟悉和掌握socket编程的基本理论和方法。掌握基于TCP和UDP的工作原理以及Socket编程的一般方法,能够编写简单的网络应用程序。(二)实验环境:软件环境:Windows2000/XP
天津理工大学实验报告

学院(系)名称:计算机与通信工程学院

姓名刘强学号20126***专业计算机科学与技术(中加)

班级教学2班

实验项目基于TCP and UDP的socket编程

课程名称计算机网络课程代码0662016
实验时间2015年4月30日  第7、8节

实验地点7-215

批改意见成绩
"

教师签字:                 

(一)实验目的:

熟悉和掌握socket编程的基本理论和方法。掌握基于TCP和UDP的工作原理以及Socket编程的一般方法,能够编写简单的网络应用程序。

(二)实验环境:

软件环境:Windows 2000/XP / Eclipse

硬件环境:IBM-PC或兼容机

局域网、PC机连入Internet

(三)实验学时:

2学时,必做.

(四)实验内容:

利用Java或C++语言,分别基于TCP和UDP编写一个简单的Client/Server网络应用程序。要求实现客户向服务器传输任意一个字符串,服务器将收到的字符串变换成大写后传回客户。

(五)实验要求:

每位同学上机编程实验,实验指导教师现场指导。程序可参考附录的程序1、程序2、程序3和程序4(程序中有错误需完善)。在实验报告中要说明Socket编程的客户端和服务器端主要步骤、利用Java语言用到的主要类及其主要作用、TCP和UDP编程的主要差异和特点、你所实现的文件传输的程序代码、实验过程和实验结果。

(六)实验步骤:

程序代码:

TCP  Client:

package tcpClient;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.Socket;

public class tcpClient {

 

 

  声明字符串变量用于存储字符串输入和传送

  从服务器得到,并送到用户标准输出

  请输入要转换的字符串:");

  为定义的套接字

  创建inFromUser程序的输入流

    将流连接到标准输入

  包含在java.io.*包中

      clientSocket.getOutputStream());

 BufferedReader inFromServer = // inFromServer 连接套接字的输入流

 包含在java.io.*包中

       clientSocket.getInputStream()));

  将用户输入的一行 读入到sentence中

  程序的输出流

  当到达服务器时,他们进入modifiedSentence字符串中

 将服务器返回来的

                打印到监视器上

  关闭套接字,tcp连接也随之关闭

 

}

  TCP  Server:

package tcpServer;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

class server {

 

 

  声明字符串变量用于存储字符串输入和传送

  从从客户端得到

  创建welcomeSocket对象,在8579端口进行监听

     while (true) {

   获取从客户端传来的字符

      BufferedReader infromClient = new BufferedReader(

     包含在java.io.*包中

          connectionSocket.getInputStream()));

   程 序的输出流

      new DataOutputStream(connectionSocket.getOutputStream());

   把用户输入的送入clientSentence中

   将发送行中的小写转换成大写

      outToClient.writeBytes(capitalizedSentence);

     }

 

}

执行结果:

UDP Client:

package udpClient;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

public class udpClient {

 

  请输入要转换的字符串:");

     BufferedReader inFromUser = new BufferedReader(new InputStreamReader(

    创建输入流,用于输入字符串

  创建一个DatagramSocket 对象

  创建一个InetAddress

     byte[] sendData = new byte[1024]; // 创建字节数组

     byte[] receiveData = new byte[1024];

  读取输入的字符

  将字符串转化为字节数组

  创建DatagramPacket 对象,

                 指定其发送地址和端口号

       sendData.length, IPAddress, 8876);

  调用 socket 对象的 send()方法发送数据

     DatagramPacket receivePacket = new DatagramPacket(receiveData,

    创建 DatagramPacket 对象, 用于接收数据

  调用 socket 对象的 receive()方法接收数据

     String modifiedSentence = new String(receivePacket.getData());

     System.out.println("FROM SERVER:" + modifiedSentence);

  关闭客户端socket连接

 

}

UDP  Server:

package udpServer;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

public class udpServer {

 

     @SuppressWarnings("resource")

  创建一个DatagramSocket

                对象,指定端口为8876

     byte[] receiveData = new byte[1024]; // 创建字节数组

     byte[] sendData = new byte[1024];

     while (true) {

    receiveData.length);

 // 创建一个空DatagramPacket对象

   使用 receiver 方法接手客户端所发送到数据,

             如果客户端没有发送数据, 进程阻塞

      String sentence = new String(receivePacket.getData());

   获取Client端IP地址

   获取Client端端口号

   将字符串转化成大写字母

      sendData = capitalizedSentence.getBytes();

   创建DatagramPacket

                 对象,

                // 指定其发送地址和端口号

        sendData.length, IPAddress, port);

   调用 socket 对象的 send()方法发送数据

     }

 

}

  执行结果:

实验体会:

(1) Datagram Sockets:数据包socket,一般传输方式为UDP

(2) Stream Sockets:流socket,一般传输方式为TCP

Java通过两个类DatagramSocket和DatagramPacket来支持但Datagram socket(UDP)。Datagram Socket不真正区分Server和Client,既可以用来写server,也可以写client。但对于java中的Socket类和ServerSocket类就只能分别来写客户端和服务器端(同时支持TCP与UDP,更Socket(String host,int port,boolean stream)构造方法中的stream即可)。

文档

基于TCP and UDP的socket编程

天津理工大学实验报告学院(系)名称:计算机与通信工程学院姓名刘强学号20126***专业计算机科学与技术(中加)班级教学2班实验项目基于TCPandUDP的socket编程课程名称计算机网络课程代码0662016实验时间2015年4月30日第7、8节实验地点7-215批改意见成绩"教师签字:(一)实验目的:熟悉和掌握socket编程的基本理论和方法。掌握基于TCP和UDP的工作原理以及Socket编程的一般方法,能够编写简单的网络应用程序。(二)实验环境:软件环境:Windows2000/XP
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top