Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 635|回复: 0

一个最简单的Socket通信例子

[复制链接]

该用户从未签到

发表于 2011-9-13 21:03:50 | 显示全部楼层 |阅读模式
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
       Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
        下面给出一个最简单的Socket通信的例子供初学者参考:
        服务器端:ServerDemo.java
        Java代码
    [li]package com.lanber.socket;    [li]   [li]import java.io.DataInputStream;    [li]import java.io.DataOutputStream;    [li]import java.io.IOException;    [li]import java.net.ServerSocket;    [li]import java.net.Socket;    [li]   [li]public class ServerDemo {    [li]   [li]    /**   [li]     * 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,   [li]     *      而后才可以向客户端发送信息,否则将会有运行时出错。   [li]     * @param args   [li]     */   [li]    public static void main(String[] args) {    [li]        ServerSocket ss = null;    [li]        try {    [li]            ss = new ServerSocket(8888);    [li]            //服务器接收到客户端的数据后,创建与此客户端对话的Socket    [li]            Socket socket = ss.accept();    [li]            //用于向客户端发送数据的输出流    [li]            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());    [li]            //用于接收客户端发来的数据的输入流    [li]            DataInputStream dis = new DataInputStream(socket.getInputStream());    [li]            System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());    [li]            //服务器向客户端发送连接成功确认信息    [li]            dos.writeUTF("接受连接请求,连接成功!");    [li]            //不需要继续使用此连接时,关闭连接    [li]            socket.close();    [li]            ss.close();    [li]        } catch (IOException e) {    [li]            e.printStackTrace();    [li]        }    [li]    }    [li]   [li]}   [/li]

客户端:ClientDemo.java

Java代码

    [li]package com.lanber.socket;    [li]   [li]import java.io.DataInputStream;    [li]import java.io.DataOutputStream;    [li]import java.io.IOException;    [li]import java.io.OutputStream;    [li]import java.net.Socket;    [li]import java.net.UnknownHostException;    [li]   [li]public class ClientDemo {    [li]   [li]    /**   [li]     * @param args   [li]     */   [li]    public static void main(String[] args) {    [li]        Socket socket = null;    [li]        try {    [li]            socket = new Socket("localhost",8888);    [li]            //获取输出流,用于客户端向服务器端发送数据    [li]            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());    [li]            //获取输入流,用于接收服务器端发送来的数据    [li]            DataInputStream dis = new DataInputStream(socket.getInputStream());    [li]            //客户端向服务器端发送数据    [li]            dos.writeUTF("我是客户端,请求连接!");    [li]            //打印出从服务器端接收到的数据    [li]            System.out.println(dis.readUTF());    [li]            //不需要继续使用此连接时,记得关闭哦    [li]            socket.close();    [li]        } catch (UnknownHostException e) {    [li]            e.printStackTrace();    [li]        } catch (IOException e) {    [li]            e.printStackTrace();    [li]        }    [li]    }    [li]   [li]}  [/li]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-2 02:55 , Processed in 0.381901 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表