`
kingxss
  • 浏览: 973321 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java Socket学习笔记(一)- TCP基本使用

阅读更多

一.服务端代码:

import java.net.*; // for Socket, ServerSocket, and InetAddress
import java.io.*; // for IOException and Input/OutputStream

public class TCPEchoServer {

    private static final int BUFSIZE = 32; // Size of receive buffer

    public static void main(String[] args) throws IOException {

        int servPort = 5500;

        // Create a server socket to accept client connection requests
        ServerSocket servSock = new ServerSocket(servPort);

        int recvMsgSize; // Size of received message
        byte[] receiveBuf = new byte[BUFSIZE]; // Receive buffer

        while (true) { // Run forever, accepting and servicing connections
            Socket clntSock = servSock.accept(); // Get client connection

            SocketAddress clientAddress = clntSock.getRemoteSocketAddress();
            System.out.println("Handling client at " + clientAddress);

            InputStream in = clntSock.getInputStream();
            OutputStream out = clntSock.getOutputStream();

            // Receive until client closes connection, indicated by -1 return
            while ((recvMsgSize = in.read(receiveBuf)) != -1) {
                out.write(receiveBuf, 0, recvMsgSize);
            }

            clntSock.close(); // Close the socket. We are done with this client!
        }
        /* NOT REACHED */
    }
}

 

二.客户端代码:

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

public class TCPEchoClient {

    public static void main(String[] args) throws IOException {

        String server = "127.0.0.1"; // Server name or IP address
        int servPort = 5500; //// Server port
        byte[] data = "Hi, World".getBytes();

        // Create socket that is connected to server on specified port
        Socket socket = new Socket(server, servPort);
        System.out.println("Connected to server...sending echo string");

        InputStream in = socket.getInputStream();
        OutputStream out = socket.getOutputStream();

        out.write(data); // Send the encoded string to the server

        // Receive the same string back from the server
        int totalBytesRcvd = 0; // Total bytes received so far
        int bytesRcvd; // Bytes received in last read
        while (totalBytesRcvd < data.length) {
            if ((bytesRcvd = in.read(data, totalBytesRcvd, data.length - totalBytesRcvd)) == -1)
                throw new SocketException("Connection closed prematurely");
            totalBytesRcvd += bytesRcvd;
        } // data array is full

        System.out.println("Received: " + new String(data));
        socket.close(); // Close the socket and its streams
    }
}

 

     上述代码的TCP服务端是单线程,一次只能服务一个客户端。

 

 

参考:

1.《Java TCP/IP Socket编程(原书第2版)》

分享到:
评论

相关推荐

    [Java学习笔记doc]-javase基本知识

    **Java学习笔记——Java SE基本知识** Java是一种广泛使用的面向对象的编程语言,以其跨平台、安全性高和可移植性而闻名。Java Standard Edition(Java SE)是Java平台的基础,它提供了开发和运行桌面应用程序、...

    Socket网络编程学习笔记之---使用线程池提高性能

    本篇学习笔记将深入探讨如何结合Socket与线程池来提升程序的运行效率。 一、Socket基础 Socket,也称为套接字,是网络编程中的一个重要概念,它是进程间通信(IPC)的一种方式,特别是在网络环境中。Socket提供了一...

    java学习笔记-Scokect.pdf

    Java学习笔记-Scoket.pdf是关于Java编程语言中Socket编程的学习笔记,涵盖了Socket编程的基础知识、Java中Socket的使用、Socket通信的原理及应用等方面的内容。 Socket编程的基础知识 在Java编程语言中,Socket是...

    android学习笔记4--socket

    本文将主要探讨基于Java的Socket编程,包括TCP和UDP协议的使用。 首先,让我们了解一下Socket的基本通信模型。Socket,通常被称为套接字,是网络通信中的一个端点,它允许两台计算机通过网络进行数据交换。在TCP/IP...

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    JAVA学习笔记 林信良

    《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...

    Java学习笔记(源码)

    3. **异常处理**:Java的异常处理机制是其强大的特性之一,学习笔记会讲解如何使用try-catch-finally语句块来捕获和处理程序运行时可能出现的错误。 4. **集合框架**:Java集合框架是存储和操作对象的重要工具,...

    Socket TCP Java 高清学习资料合集

    包括 1.TCP-IP详解卷1:协议 中文版PDF 2.高级TCP/IP编程 中文版PDF 3.TCPIP Sockets in Java 2nd 英文版PDF, 4.Advanced JAVA networking英文版PDF ...5.中文版Socket Java教程 6.Socket Java学习笔记 7.UDP简单案例

    2022年Java学习笔记-Java课程配套案例.rar

    这份"2022年Java学习笔记-Java课程配套案例.rar"压缩包文件显然是为了帮助学习者深入理解Java编程,通过实践案例来巩固理论知识。下面将详细探讨Java语言的一些核心知识点,并结合压缩包中的案例进行说明。 1. **...

    java se学习笔记

    【Java SE学习笔记】是针对Java初学者的一份详实的学习资源,主要涵盖了Java的基础知识、进阶概念以及编程实践。这份笔记以HTML格式呈现,方便读者在线阅读或下载后离线浏览。以下是对这份笔记可能包含的重要知识点...

    良葛格Java学习笔记

    - **Socket通信**:TCP和UDP的基本原理,以及Socket和ServerSocket的使用。 - **HTTP协议**:发送HTTP请求和处理响应的方法。 9. **反射机制** - **Class类**:获取类的信息,创建对象,调用方法。 - **动态...

    java校招学习笔记

    这份"java校招学习笔记"应该是一个全面的参考资料,帮助求职者巩固Java知识,提高解决问题的能力,以应对面试中的各种挑战。同时,实践项目经验和解决实际问题的能力也是校招面试中不可或缺的部分,因此理论学习的...

    java学习笔记 初学者必读

    2.2. Java中基本概念 2-5 3. 二•定义,关键字和类型 3-5 3.1. 注释的三种形式 3-5 3.2. Java代码中的“;”、“{}”、“ ” 3-5 3.3. 标识符 3-5 3.4. 数据类型 3-6 3.5. 命名规则 3-6 4. 三•表达式和控制流 4-6 ...

    MLDN 2009 JAVA SE 笔记16-23

    8. **网络编程**:Java提供了Socket和ServerSocket类来进行TCP/IP通信,笔记可能会讲解如何创建客户端和服务端,进行数据的收发。 9. **JNI(Java Native Interface)**:如果笔记深入,可能会触及JNI,它是Java与...

    良葛格 Java 学习笔记-JavaGossip全(v1+v2)

    《良葛格 Java 学习笔记-JavaGossip全(v1+v2)》是一部集成了作者良葛格多年编程经验的学习资料,旨在帮助初学者和有经验的开发者深入理解和掌握Java这门强大的编程语言。这份笔记包含了JavaGossip的两个版本,v1和...

    Socket网络编程学习笔记.zip

    "TCP_UDP_Socket学习笔记.md" 文件很可能会详细阐述这些概念,包括如何创建和使用Socket对象,如何处理连接和数据传输,以及在实际应用中的注意事项。此外,笔记可能还会包含实例代码,帮助初学者更好地理解和实践...

    JAVA学习笔记4

    标题“JAVA学习笔记4”和描述“JAVA语言学习路上的笔记4,通过实际结合总结,使用Eclipse编辑代码”所涉及的知识点是Java语言的学习和实践,尤其是涉及到Java网络程序设计。这部分内容中提及了TCP网络编程以及相关的...

    JAVA学习笔记

    JAVA学习笔记是一个全面涵盖JAVA编程基础到进阶的资源集合,特别适合初学者掌握JAVA语言和项目开发技术。笔记内容包括了几个核心领域,如编程思想、多线程设计模式、网络编程,以及JAVA的新输入/输出(NIO)系统。 ...

    Java专题学习笔记

    Java专题学习笔记主要涵盖了Java语言的核心概念、进阶特性以及实际应用中的问题解析。这份笔记是结合了讲师的讲解和个人的整理,旨在为热爱Java编程的朋友们提供丰富的学习资源。以下将详细介绍其中可能包含的知识点...

    java深入学习笔记.pdf

    "java深入学习笔记.pdf" java是一种广泛应用的编程语言,具有平台独立性、...以上知识点只是java深入学习笔记.pdf中的一部分,java语言有很多其他的特性和应用领域,本文只是对java语言的基本概念和知识点进行了概述。

Global site tag (gtag.js) - Google Analytics