利用Socket进行Java网络编程(一)

考试吧(Exam8.com) 2003-03-04 08:00:00 评论(0)条

作者: 郗旻

Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。在Java中,有专门的Socket类来处理用户的请求和响应。利用Socket类的方法,就可以实现两台计算机之间的通讯。这里就介绍一下在Java中如何利用Socket进行网络编程。

在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。

程序可以对这些数据流根据需要进行进一步的封装。本文的例子就对这些数据流进行了一定的封装(关于封装可以参考Java中流的实现部分)。

为了更好的说明问题,这里举了一个网上对话的例子,客户端启动以后,服务器会启动一个线程来与客户进行文字交流。

要完成这个工作,需要完成三个部分的工作,以下依次说明:

一、建立服务器类

Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象。

ServerSocket server = new ServerSocket(9998)

这条语句创建了一个服务器对象,这个服务器使用9998号端口。当一个客户端程序建立一个Socket连接,所连接的端口号为9998时,服务器对象server便响应这个连接,并且server.accept()方法会创建一个Socket对象。服务器端便可以利用这个Socket对象与客户进行通讯。

Socket incoming = server.accept()

进而得到输入流和输出流,并进行封装

BufferedReader in = new BufferedReader(new

InputStreamReader(incoming.getInputStream()));

PrintWriter out = new PrintWriter(incoming.getOutputStream(),true);

随后,就可以使用in.readLine()方法得到客户端的输入,也可以使用out.println()方法向客户端发送数据。从而可以根据程序的需要对客户端的不同请求进行回应。

在所有通讯结束以后应该关闭这两个数据流,关闭的顺序是先关闭输出流,再关闭输入流,即使用

out.close();

in.close();

展开全文

winsock使用java编写_利用Socket进行Java网络编程(一)相关推荐

  1. android socket 简易聊天室 java服务器_利用Socket制作一个简易的Android聊天室

    首先制作一个客户端,界面如下: 使用方法:启动后,首先在登录编辑框输入一个昵称,然后点击登录,上面灰色区域是聊天窗,其中会显示你的登录提示,显示其他人发的消息.在的登录成功后,可以在下面的发送编辑框内 ...

  2. 浅谈JAVA中如何利用socket进行网络编程(二)

    转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  3. JAVA编写的使用Socket模拟Http的GET操作

    JAVA编写的使用Socket模拟Http的GET操作,看后就很容易理解Web浏览器的原理了. import java.io.BufferedReader; import java.io.InputS ...

  4. Java基础学习——第十四章 网络编程

    Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...

  5. Java学习记录五(多线程、网络编程、Lambda表达式和接口组成更新)

    Java学习记录五(多线程.网络编程.Lambda表达式和接口组成更新) Java 25.多线程 25.1实现多线程 25.1.1进程 25.1.2线程 25.1.3多线程的实现 25.1.4设置和获 ...

  6. Java Review(三十八、网络编程)

    文章目录 网络基础 IP地址 端口 域名 网络模型 常用协议 Java 的基本网络支持 使用 InetAddress URL. URLConnection 和 URLPermission 基于TCP协 ...

  7. excel中用java语言_利用 JAVA 操作 EXCEL 文件

    Java Excel 是一开放源码项目,通过它 Java 开发人员可以读取 Excel 文件的内容.创建新的 Excel 文件.更新已经存在的 Excel 文件.使用该 API 非 Windows 操 ...

  8. java 设备指纹_使用Socket In(JAVA)处理生物识别指纹考勤设备

    我正在尝试使用 Java程序连接生物识别指纹考勤设备(实际上我是新手!).我使用的设备是Biocom指纹考勤系统.但是,我正在搜索和阅读有关这一点,我看到SDK可以使用哪种基于设备类型(这很难,不合逻 ...

  9. 去掉java文件中的注释_利用JavaParser去除java文件中的注释

    利用JavaParser去除java文件中的注释 个人博客:记录一下在项目实施过程中的一些点 情景回顾 之前项目有个需求,就是去掉.java文件中的所有注释,常用的方法是用正则匹配.然而在网络上查找到 ...

最新文章

  1. HttpClient(4.5.x)正确的使用姿势
  2. 【Tools】Wireshark3.0安装教程详解
  3. 安卓进阶系列-06数据库框架(LitePal)的使用
  4. 去重的Set解不出“斯诺登的密码”(洛谷P1603题题解,Java语言描述)
  5. (数据库系统概论|王珊)第二章关系数据库-第一节:关系数据结构及其形式化定义
  6. 确保帐户安全 谈MySQL数据库安全解决方案
  7. 风起云涌:传Oracle技术的二号人物 Thomas Kurian 正在离开
  8. 【时间序列分析】16.平稳序列的决定性
  9. 有关linux表情图片,面向Ubuntu的LumaQQ个人修改版下载(支持新款表情)
  10. java通过反射调用有参数的方法
  11. cocoa-CoreData
  12. html文本怎么转化为数字html,将阿拉伯数字转换为html文件中的阿拉伯/波斯数字...
  13. 出圈c语言,c语言作业 出圈游戏
  14. Android蓝牙开发的各种坑
  15. jQuery_01选择器
  16. Tomcat启动内存设置
  17. 生活中的经典感人语句
  18. java入门习题,3000米长的绳子,每天减一半,问多少天这个绳子会小于5米?不考虑小数。
  19. 数据库人大金仓KingbaseES 数据库对象管理工具连接错误(实例创建失败)问题解决办法
  20. SSL证书链不完整(或不被客户端信任)问题,填坑

热门文章

  1. 表的连接方式:NESTED LOOP、HASH JOIN、SORT MERGE JOIN【转】
  2. [ES6] 细化ES6之 -- 块级作用域
  3. 带你学习Javascript中的函数进阶(一)
  4. 戴尔游匣7559经常(大概半小时)断电,关机的解决办法
  5. easyPR源码解析之ann_train.h/config.h
  6. 7-42 关于堆的判断 (25 分)
  7. L2-4 哲哲打游戏 (25 分)
  8. PTA c语言 统计一行文本的单词个数
  9. mysql5.7存储json_MySQL5.7的json数据格式的问题
  10. centos 安装mysql扩展_centos php安装mysql扩展的方法