`
zhangziyangup
  • 浏览: 1187061 次
文章分类
社区版块
存档分类
最新评论

TCP和UDP的简单JAVA程序,从《计算机网络 自顶向下方法》中抄的,然后加了点注释。

 
阅读更多

以下是按照书打的,加了点注释,也就是我个人的理解,由于我刚出茅庐,而且这方面我感觉蛮难得,希望大家有啥意见提出来,大家一起探讨探讨。

TCP客户端程序代码。

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;


public class TCPClient {

	/**
	 * @param args
	 * @throws Exception 
	 * @throws UnknownHostException 
	 * TCP套接字由,源IP地址,源端口号,目标IP地址,目标端口号组成的。
	 */
	public static void main(String[] args) throws UnknownHostException, Exception {
		// TODO Auto-generated method stub
		String sentence;
		String modifiedSentence;
		BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));	// 获取键盘输入的数据
		Socket clientSocket = new Socket("192.168.1.3", 6789);								// 建立连接时传入IP地址和端口号,TCP是可靠的连接。
		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();
	}

}

TCP服务器端代码

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;


public class TCPServer {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		String clientSentence;
		String capitalizedSentence;
		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客户端代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;


public class UDPClient {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
		DatagramSocket clientSocket = new DatagramSocket();
		InetAddress IPAddress = InetAddress.getByName("192.168.1.3");				
		byte[] sendData = new byte[1024];
		byte[] receiveData = new byte[1024];
		String sentence = inFromUser.readLine();
		sendData = sentence.getBytes();
		DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);		// 与TCP不同,这是无连接的传输,所以把端口号写在packet中,
		clientSocket.send(sendPacket);
		DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
		clientSocket.receive(receivePacket);
		String modifiedSentence = new String(receivePacket.getData());
		System.out.println("From sever:" + modifiedSentence);
		clientSocket.close();
	}

}

UDP服务器端代码

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


public class UDPServer {

	/**
	 * @param args
	 * @throws IOException 
	 * 
	 * 没有握手请求了。
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		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());
			InetAddress IPAddress = receivePacket.getAddress();
			int port = receivePacket.getPort();
			String capitalizedSentence = sentence.toUpperCase();
			sendData = capitalizedSentence.getBytes();
			DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
			serverSocket.send(sendPacket);
		}
	}

}

注释的有点仓促,希望大家多提意见,多多指点,我看到后肯定给答复。

分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    java源码包2

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    java源码包3

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式...

    java源码包4

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式...

    Java聊天室项目

    Java聊天室项目是一种基于Java Socket和多线程技术构建的实时通信应用,它允许多个用户通过网络进行文本交流。在本项目中,我们将探讨以下几个关键知识点: 1. **Java Socket编程**:Java Socket是Java提供的网络...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    第8章 Java中的包(Package)命名习惯和注释 193 教学视频:43分钟 8.1 Java中的包(Package) 193 8.1.1 Java中的包 193 8.1.2 在Eclipse中使用包 194 8.1.3 天上掉下个package 197 8.1.4 包带来了什么? 197...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    第8章 Java中的包(Package)命名习惯和注释 193 教学视频:43分钟 8.1 Java中的包(Package) 193 8.1.1 Java中的包 193 8.1.2 在Eclipse中使用包 194 8.1.3 天上掉下个package 197 8.1.4 包带来了什么? 197...

    计算机网络原理实验指导

    ### 计算机网络原理实验指导 #### 实验一:Wireshark协议分析 ##### 软件环境 - **操作系统**: Windows - **工具**: Wireshark ##### 实验内容与目标 本实验旨在通过实际操作加深学生对常用网络协议的理解。...

    Java编程那些事儿[完整版]PDF(无加密版)

    ### Java编程那些事儿 #### 序言 ...以上内容涵盖了《Java编程那些事儿》一书中关于计算机基础、Java语言介绍、开发环境搭建、基础语法和流程控制等方面的知识点,为Java初学者提供了全面的学习指南。

    java初级知识

    - **JRE(Java Runtime Environment)**:包含Java虚拟机和Java核心类库,是运行Java程序所必需的环境。 - **JDK(Java Development Kit)**:除了包含JRE外,还提供了编译、调试和其他开发工具,是开发Java应用程序...

    2021-2022计算机二级等级考试试题及答案No.5094.docx

    18. 视图设计在数据库概念设计中,可以自顶向下、由底向上或由内向外进行,但由整体到局部不是一种常见的设计次序,选项D是错误的。 19. 软件测试的目的是发现错误,但改正错误通常不是测试人员的任务,而是开发...

Global site tag (gtag.js) - Google Analytics