`
dimpen
  • 浏览: 24448 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Java socket回顾

阅读更多
好久没有接触socket网路编程了,查快要把最基础的都忘记了,今天,写个Server,Client回顾一下。

Server端代码:
import java.io.BufferedReader;   
import java.io.DataInputStream;   
import java.io.DataOutputStream;   
import java.io.InputStreamReader;   
import java.net.ServerSocket;   
import java.net.Socket;   
  
public class SecServer {   

    public static final int PORT =10000;   
  
    public static void main(String[] args) {   
        System.out.println("服务器:\n");   
        SecServer server = new SecServer();   
        server.service();   
    }   
  
    public void service() {   
        try {   
            ServerSocket server = new ServerSocket(PORT);   
           while (true) {   
                // 等待接收客户端连接
                Socket client = server.accept();   
                new ThreadServer(client);   
            }   
        } catch (Exception e) {   
            e.printStackTrace();
        }   
    }   
  
    private class ThreadServer implements Runnable {   
  
        private Socket socket;   
  
        public ThreadServer(Socket sock) {   
            socket = sock;   
            new Thread(this).start();   
        }   
  
        public void run() {   
            try {   
 
                DataInputStream input = new DataInputStream(socket.getInputStream());   

                DataOutputStream out = new DataOutputStream(socket.getOutputStream());   
                  
                // 读取客户端数据   
                System.out.println("客户端发过来的内容: " + input.readUTF());   
  
                System.out.print("请输入: \t");   
                // 接收键盘输入
                String s = new BufferedReader(new InputStreamReader(System.in)).readLine();   
                out.writeUTF(s);   
                input.close();   
               out.close();   
            } catch (Exception e) {   
                e.printStackTrace();
            }   
        }   
  
    }   
}  


客户端代码:
import java.io.BufferedReader;   
import java.io.DataInputStream;   
import java.io.DataOutputStream;   
import java.io.InputStreamReader;   
import java.net.Socket;   
  
public class SecClient {   
       
    public static final int PORT = 10000;   
       
    public static final String IP = "localhost";   
       
    public static void main(String[] args) {   
        System.out.println("客户端:\n");   
        Socket socket = null;   
        try {   
            System.out.println("当客户端接收到\"exit\" 的时候,将与服务器断开\n");   
            while (true) {   
                // 将socket连接到指定主机上的指定端口号   
                socket = new Socket(IP, PORT);
                   
                DataInputStream input = new DataInputStream(socket.getInputStream());  
 
                DataOutputStream out = new DataOutputStream(socket.getOutputStream());

                System.out.print("请输入: \t");
                String str = new BufferedReader(new InputStreamReader(System.in)).readLine();
                out.writeUTF(str);
   
                System.out.println("服务器端返回过来的是: " + ret);   
                // 如接收到 "exit" 则客户端将于服务器端断开
                if ("exit".equals(input.readUTF())) {   
                    System.out.println("客户端退出");   
                    //Thread.sleep(500);   
                    break;   
                }   
            }   
        } catch (Exception e) {   
            e.printStackTrace();   
       } finally {   
            if (socket != null) {   
                try {   
                    socket.close();   
                } catch (Exception e) {   
                    socket = null;   
                    e.printStackTrace();   
                }   
            }   
        }   
    }   
  
}  


先启动服务端,在启动客户端,可实现客户、服务对话。
分享到:
评论

相关推荐

    Java编程复习代码

    大四学期复习Java基础所产生的代码笔记,着重回顾了字符串、IO、线程以及socket套接字编程,在每一分代码中都附带了自己编程时的一些认识、笔记。适合Java基础不够踏实的童鞋。

    JAVA基础课程讲义

    基于TCP协议的SOCKET编程和通信 193 UDP通讯的实现 201 思考作业 203 上机作业(分组完成,3人一组,周末完成) 204 第十一章 JAVA多媒体编程 205 字体 205 字体示例和效果 205 颜色 206 颜色编程示例 206 图形绘制 ...

    java进阶13天资料.zip

    Java进阶13天资料 day01-复习回顾、静态、继承、引用类型使用 day02-抽象类、接口、代码块,final、单例、枚举 day03-多态、包、权限修饰符、内部类,Object类,Date类 day04-常用API、正则表达式,泛型、Collection...

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

    8.3 命名习惯大回顾 204 8.4 Java中的注释 205 8.4.1 使用双斜杠的单行注释 205 8.4.2 多行注释 206 8.4.3 Javadoc注释 206 8.5 小结:包让Java的类更清晰优雅 208 8.6 习题 209 第9章 再看数组、字符串和...

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

    8.3 命名习惯大回顾 204 8.4 Java中的注释 205 8.4.1 使用双斜杠的单行注释 205 8.4.2 多行注释 206 8.4.3 Javadoc注释 206 8.5 小结:包让Java的类更清晰优雅 208 8.6 习题 209 第9章 再看数组、字符串和...

    Java毕业设计-基于jsp技术开发的聊天室的设计与实现原生Sevlet_socket(源码+lun文+视频齐全).rar

    4. 聊天记录与离线消息:用户可以查看历史聊天记录,方便回顾与他人的交流内容。对于离线期间收到的消息,系统会在用户上线后自动推送,确保用户不会错过任何重要信息。 5. 好友管理:用户可以添加、删除、修改好友...

    蚂蚁课堂(每特学院)第一期-Java高端培训视频教程

    0007--Java网络编程之socket.zip ├─0008--Maven.zip ├─0009--Web开发入门.zip ├─0010--深入理解Servlet.zip ├─0011--Session与Cokile实现原理.zip ├─0012--深入理解Http协议.zip ├─0013--Mybatis.zip ├...

    基于Java的视频会议系统的实现.rar

    网络通信:采用Java的Socket编程实现客户端与服务器之间的通信,可以选择TCP或UDP协议。 图形界面:可以使用JavaFX或Swing等GUI库来实现客户端的用户界面设计。 安全性考虑: 数据加密:对音视频数据和聊天内容进行...

    基于Java的五子棋游戏的设计与实现.rar

    网络对战:如果需要实现网络对战功能,可以考虑使用Socket编程实现客户端与服务器之间的通信,并同步玩家的落子情况。 游戏记录:记录游戏过程和结果,以便玩家回顾对局历史。 音效与动画:为游戏添加音效和动画效果...

    Java开发技术大全 电子版

    14.9.1流式布局(FlowLayout)回顾527 14.9.2边框布局(BorderLayout)使用示例528 14.9.3网格布局(GridLayout)使用示例529 14.9.4卡片布局(CardLayout)使用示例530 14.9.5增强网格布局(GridBagLayout)...

    精通并发与 netty 视频教程(2018)视频教程

    32_IO体系架构系统回顾与装饰模式的具体应用 33_Java NIO深入详解与体系分析 34_Buffer中各重要状态属性的含义与关系图解 35_Java NIO核心类源码解读与分析 36_文件通道用法详解 37_Buffer深入详解 38_NIO堆外内存与...

    java课程设计题目..doc

    Java课程设计题目 一、课程设计总体要求: 本次课程设计是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回 顾和实践,因此,开始设计前学生一定要先回顾以前所学的内容,明确本次作业设计所要用 到的技术...

    基于javatcpsocket通信的拆包和装包源码-Android-:工作五年多了,一直没有仔细回顾过过去,正好现在将要离职时间比较空闲,整理

    基于java tcp socket通信的拆包和装包源码 Android- 工作五年多了,一直没有仔细回顾过过去,正好现在将要离职时间比较空闲,整理一下android方面的知识点   另外点名批评有道云,我整理笔记三次丢失大量笔记,总计...

    Java线程:线程安全与不安全

    记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT、Socket、多线程、I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远了。上次在百度开发者大会上...

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版

    6.1 回顾标准库 135 6.2 还有另一个C库 136 6.2.1 二进制兼容性 136 6.2.2 提供了什么 136 6.2.3 缺什么 137 6.3 内存管理 137 6.3.1 内存分配 137 6.3.2 C语言的动态内存管理 138 6.3.3 C++的动态内存管理 ...

    精通并发与netty视频教程(2018)视频教程

    77_Java NIO Buffer总结回顾与难点拓展 78_Netty数据容器ByteBuf底层数据结构深度剖析 79_Netty的ByteBuf底层实现大揭秘 80_Netty复合缓冲区详解与3种缓冲区适用场景分析 81_Netty引用计数的实现机制与自旋锁的使用...

    python网络编程DAY02.txt

    前情回顾 1. osi七层模型是什么? 2. 三次握手和四次挥手? 3. tcp和udp区别 网络概念 : 主机 端口 IP 域名 套接字 : 网络编程方式 流式套接字:tcp 数据报套接字: udp tcp服务端流程 socket() ---> bind() -...

    精通并发与netty 无加密视频

    第77讲:Java NIO Buffer总结回顾与难点拓展 第78讲:Netty数据容器ByteBuf底层数据结构深度剖析 第79讲:Netty的ByteBuf底层实现大揭秘 第80讲:Netty复合缓冲区详解与3种缓冲区适用场景分析 第81讲:Netty引用...

    ProjectsList:列出我所有的公共或私人项目

    完成度:60%语言:Java GitHub: : 技能:socket编程HTTP协议Java基本语法多线程线程池P1名称:同步攻击描述:一个简单的tcp syn攻击工具。完成度:80%语言:C GitHub: : 技能:TCP协议IPv4协议原始专有编程Linux...

    ZendFramework中文文档

    3.4.2. 设计回顾 3.4.3. 配置选项 3.4.4. Resolvers 3.4.4.1. 文件 Resolver 3.4.5. 基本用法 4. Zend_Cache 4.1. 简介 4.2. 缓存原理 4.2.1. Zend_Cache 工厂方法 4.2.2. 标记纪录 4.2.3. 缓存清理 4.3. ...

Global site tag (gtag.js) - Google Analytics