`
NOthingAj
  • 浏览: 16505 次
社区版块
存档分类
最新评论

Java网络编程小结

    博客分类:
  • Java
阅读更多

简单的Java网络编程客户端和服务器的交流代码

 

服务器:

import java.net.*;
import java.io.*;
import java.lang.*;


public class Server extends Thread{
    private ServerSocket serverSocket;
    public static void main(String[] args) {
        int port = Integer.parseInt(args[0]);

        try {
            Thread t = new Server(port); 
            t.run();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Server(int port) throws IOException{
        serverSocket = new ServerSocket(port);
        serverSocket.setSoTimeout(10000); // 超时后就阻塞该线程
    }

    public void run() {
        while(true) {
            try {
                System.out.println("等待远程连接,端口号为:" + serverSocket.getLocalPort() + "...");
                Socket server = serverSocket.accept(); // 等待客户端的连接
                
                System.out.println("远程主机地址:" + server.getRemoteSocketAddress());
                DataInputStream in = new DataInputStream(server.getInputStream());
                System.out.println(in.readUTF());

                DataOutputStream out = new DataOutputStream(server.getOutputStream());
                // 将服务器地址写回客户端 
                out.writeUTF("服务器地址为:" + server.getLocalSocketAddress() + ", 连接结束..."); 
                server.close();
            } catch (SocketTimeoutException se) {
                System.out.println("连接超时...");
                break;
            } catch (IOException ie) {
                ie.printStackTrace();
                break;
            }
        }
    }
}

 

客户端:

import java.net.*;
import java.io.*;
import java.lang.*;

public class Client {

    public static void main(String[] args) {
        String serverName = args[0];
        int port = Integer.parseInt(args[1]);

        try {
            System.out.println("连接到主机:" + serverName + ",端口号:" + port);

            Socket client = new Socket(serverName, port);
            System.out.println("远程主机地址:" + client.getRemoteSocketAddress());

            OutputStream outServer = client.getOutputStream();
            DataOutputStream out = new DataOutputStream(outServer);

            out.writeUTF("Hello from " + client.getLocalSocketAddress());
            InputStream inFromServer = client.getInputStream();
            DataInputStream in = new DataInputStream(inFromServer);
            System.out.println("服务器响应: " + in.readUTF());
            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

分享到:
评论

相关推荐

    Java 网络编程实验报告 含实验总结

    Java网络编程是计算机科学中的一个重要领域,特别是在分布式系统和服务器端开发中不可或缺。这个实验报告主要涉及了两个关键概念:I/O操作和线程管理,同时包含了一个基本的聊天室代码实现,这为我们提供了理解Java...

    Java编程语言详细教程

    ◇8.3 基于Socket的低层次Java网络编程 ◇本讲小结 ◇课后习题 ★ 第九讲 JavaBean和RMI ◇课前索引 ◇9.1 JavaBean的基本概念 ◇9.2 JavaBean开发简介 ◇9.3 RMI的基本概念和编程简介 ◇9.4 EJB简介 ◇本...

    Java趣味编程100例 清华大学出版社.zip

    本书讲解了100个各种类型的Java编程趣味题的求解过程,旨在帮助读者培养编程兴趣,拓宽Java编程思维,提高Java编程能力,掌握用程序设计解决实际问题的方法与技巧。本书取材注重趣味性与实用性,内容涵盖了Java编程...

    Java编程开发 Java输入语句小结.doc

    在Java编程中,输入语句是程序与用户交互的关键部分,允许用户向程序提供数据。以下是对Java输入语句的详细总结,主要介绍两种常用的方法:`Scanner`类和`BufferedReader`类。 1. 使用`Scanner`类: `Scanner`类是...

    Java数据库编程宝典 PDF格式

    1.6 小结 第2章 SQL语言基础 2.1 SQL语言简介 2.2 SQL数据类型 2.3 数据定义语言(DDL) 2.4 数据操作语言(DML) 2.5 数据查询语言(DQL) 2.6 数据控制语言(DCL) 2.7 数据库中的对话、事务和锁定 2.8 创建和使用...

    Java语言基础小结

    ### Java语言基础小结 #### 一、JDK, JRE, JVM的关系 - **JVM(Java Virtual Machine)**:Java虚拟机是Java程序跨平台运行的核心,它负责执行Java字节码(.class文件),确保Java程序可以在不同的平台上运行而...

    Java网络编程--Unix域协议:概述

    16.5 小结 Unix域协议是Unix和类Unix系统中一个高效的本地进程通信机制,它提供与网络协议一致的API,简化了编程模型。虽然其他IPC机制如消息队列、共享内存、命名管道等也有各自的优势,但Unix域协议的接口兼容性使...

    Java 正则表达式小结

    Java正则表达式是Java编程语言中的一个强大工具,它用于在字符串中进行模式匹配和查找、替换等操作。在本文中,我们将深入探讨Java正则表达式的概念、语法以及如何在实际编程中使用它们。 1. **正则表达式基础** -...

    Java完美编程(第3版).pdf

     小结   自测题参考答案   编程项目  第2章 控制台输入和输出   引言   前导知识   2.1 屏幕输出   2.2 使用scanner类的控制台输入   小结   自测题参考答案   编程项目  第3章 控制流  ...

    Java数据编程指南

    一些Java细节 设计性事务处理 铭记要点 小结 第21章 开发EJB客户机 引言 EJBs的客户机 小结 第22章 开发可扩缩的EJB应用程序 引言 Enterprise JavaBeans的优点 EJB的广阔开放空间...

    Java个人学习小结

    ### Java个人学习小结 #### Java发展史及重要里程碑 - **起源与发展**: Java 的起源可以追溯到 1992 年,当时的 Sun Microsystems 公司开发了一种名为 Oak 的编程语言,最初是为了家用电器的智能化而设计的。然而...

    JAVA 模块知识小结

    JAVA模块知识小结涵盖的内容非常广泛,包含了Java技术栈中的多个重要知识点,从基础的开发工具到框架、数据库以及编程语言本身,以下是对给定文件中提到的各项技术的详细知识点梳理: 1. Hibernate和Ibatis ...

    java集合小结

    ### Java集合小结 #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,...

    Java数据库编程宝典4

    1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 通用完整性规则 2.2.2 特定于数据库的完整性规则 2.3 小结 第3章 SQL基础 ...

    JAVA C++ JNI小结一下JNI编程

    ### JNI编程概述 JNI(Java Native Interface)是Java平台的一部分,它允许Java代码与其他语言写的代码进行交互。JNI尤其在需要高性能计算时被用来调用C或C++编写的程序,因为这些原生语言通常比Java运行得更快。...

    Java I/O编程 java

    8. 数据流小结: 在Java I/O编程中,理解不同类型的流及其用途至关重要。字节流和字符流分别处理二进制和文本数据,过滤流提供了额外的功能,管道流实现了线程间的通信,对象流使得对象可以持久化。掌握这些基础,...

    java链表 个人总结

    Java链表是编程中一种基础且重要的数据结构,它在许多场景下有着广泛的应用。本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组...

    Java数据库编程宝典3

    1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 通用完整性规则 2.2.2 特定于数据库的完整性规则 2.3 小结 第3章 SQL基础 ...

    java编程基础

    ### Java编程基础知识点详解 #### 一、进制与数据类型 ##### 1. 进制 - **十进制**:使用数字`0-9`表示,当数值达到`10`时进一位。 - **八进制**:使用数字`0-7`表示,以数字`0`开头来标记其为八进制数。例如,`...

Global site tag (gtag.js) - Google Analytics