培训首页  >  培训新闻  >  软件开发新闻  >  Java Socket 编程原理

Java Socket 编程原理

来源:

沈阳市和平区爱尚职业培训机构

    发表于:2018-06-28 15:53:19  

事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于爱尚沈阳java培训的学员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工作.Java Socket编程就是其中之一.对于Java而言.这些Api存在与java.net 这个包里面.因此只要导入这个包就可以准备网络编程了。

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


建立服务器类

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();


客户端和服务端同时读和写

前面爱尚沈阳java培训老师已经说了Socket之间是双向通信的,它既可以接收数据,同时也可以发送数据。

服务端代码

public class Server {

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

//为了简单起见,所有的异常信息都往外抛

int port = 8899;

//定义一个ServerSocket在端口8899上

ServerSocket server = new ServerSocket(port);

//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的

Socket socket = server.accept();

//跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。

Reader reader = new InputStreamReader(socket.getInputStream());

char chars[] = new char[64];

int len;

StringBuilder sb = new StringBuilder();

while ((len=reader.read(chars)) != -1) {

sb.append(new String(chars, 0, len));

}

System.out.println("from client: " + sb);

//读完后写一句

Writer writer = new OutputStreamWriter(socket.getOutputStream());

writer.write("Hello Client.");

writer.flush();

writer.close();

reader.close();

socket.close();

server.close();

}

}

文中图片素材来源网络,如有侵权请联系删除
分享到:

Java Socket 编程原理 原创内容,请点击沈阳软件开发培训

  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

热门课程

  • 沈阳UED设计工程师培训

    询价

  • 沈阳软件开发零基础培训班

    询价

  • Python全栈培训课程

    询价

  • Java培训4月10日在线直播课程

    询价

  • 人工智能技术,电脑技术

    询价