JavaSocket,java socket客户端代码

本文目录一览:

java中的socket是什么意思?

所谓socket通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过”套接字”向网络发出请求或者应答网络请求。

以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

重要的Socket API:

java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。

. Accept方法用于产生”阻塞”,直到接受到一个连接,并且返回一个客户端的Socket对象实例。”阻塞”是一个术语,它使程序运行暂时”停留”在这个地方,直到一个会话产生,然后程序继续;通常”阻塞”是由循环产生的。

. getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。

. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。

2ServerSocket类例子编辑

package com.lanber.socket;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

public class ServerDemo {

/**

* 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,

* 而后才可以向客户端发送信息,否则将会有运行时出错。

* @param args

*/

public static void main(String[] args) {

ServerSocket ss = null;

try {

ss = new ServerSocket(8888);

//服务器接收到客户端的数据后,创建与此客户端对话的Socket

Socket socket = ss.accept();

//用于向客户端发送数据的输出流

DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

//用于接收客户端发来的数据的输入流

DataInputStream dis = new DataInputStream(socket.getInputStream());

System.out.println(“服务器接收到客户端的连接请求:” + dis.readUTF());

//服务器向客户端发送连接成功确认信息

dos.writeUTF(“接受连接请求,连接成功!”);

//不需要继续使用此连接时,关闭连接

socket.close();

ss.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

3客户端的例子编辑

package com.lanber.socket;

importjava.io.DataInputStream;

import java.io.DataOutputStream;

importjava.io.IOException;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;

public class ClientDemo {

/**

* @param args

*/

public static void main(String[] args) {

Socket socket = null;

try {

socket = new Socket(“localhost”,8888);

//获取输出流,用于客户端向服务器端发送数据

DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

//获取输入流,用于接收服务器端发送来的数据

DataInputStream dis = new DataInputStream(socket.getInputStream());

//客户端向服务器端发送数据

dos.writeUTF(“我是客户端,请求连接!”);

//打印出从服务器端接收到的数据

System.out.println(dis.readUTF());

//不需要继续使用此连接时,记得关闭哦

socket.close();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

java Socket通信原理

具体如下:

首先socket 通信是基于TCP/IP 网络层上的一种传送方式,我们通常把TCP和UDP称为传输层。其中UDP是一种面向无连接的传输层协议。UDP不关心对端是否真正收到了传送过去的数据。

如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。UDP常用在分组数据较少或多播、广播通信以及视频通信等多媒体领域。

在这里我们不进行详细讨论,这里主要讲解的是基于TCP/IP协议下的socket通信。

socket是基于应用服务与TCP/IP通信之间的一个抽象,他将TCP/IP协议里面复杂的通信逻辑进行分装。

服务端初始化ServerSocket,然后对指定的端口进行绑定,接着对端口及进行监听,通过调用accept方法阻塞。

此时,如果客户端有一个socket连接到服务端,那么服务端通过监听和accept方法可以与客户端进行连接。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

java socket有什么作用

socket 用来写网络通讯程序的,简单来说在远程机器,和本地机器各建一个socket,然后进行连接通讯即可。

QQ什么的都网络通讯都是采用socket来写的。

有兴趣的话看看网络编程(非Web网络编程)方面的书

原创文章,作者:QOPS,如若转载,请注明出处:https://www.506064.com/n/131237.html

(0)
QOPSQOPS
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

  • 如何使用R语言表格实现数据分析与可视化

    在数据科学领域中,数据分析和可视化是最为重要的两个环节。R语言是目前最为流行的数据分析语言之一,而表格是最基本的数据结构之一。因此,本文将详细介绍如何使用R语言表格实现数据分析与可…

    编程 2024-10-11
  • 使用Java-jar运行Jar包

    引言 在Java编程中,我们常常需要打包和部署应用程序,以方便用户使用。Jar包(Java Archive)是一种我们打包和分发Java程序的方式。在本文中,我们将学习如何使用Ja…

    编程 2024-10-04
  • JS for 实现跳出循环的技巧,提高代码效率

    一、break 语句 for (let i = 0; i < 10; i++) { if (i === 5) { break; } console.log(i); } 在 f…

    编程 2024-10-04
  • Python合并两个数组详解

    一、Python合并两个数组并排序 Python语言中合并两个数组并排序非常简单。可以将两个数组合并为一个,再使用Python的sort()方法对合并后的数组进行排序。 arr1 …

    编程 2024-10-03
  • c语言编程题,c语言编程题目网站

    本文目录一览: 1、C语言编程题 求代码 2、c语言编程100题,有没有大神帮帮忙 3、C语言编程题怎么做? 4、10道经典的C语言例题(含参考程序) 5、c语言编程题 C语言编程…

    编程 2024-10-04
  • 如何提高网站的可访问性与用户体验

    在当今互联网高速发展的时代,网站已经成为许多企业展示实力和吸引用户的主要场景。但是,如果网站缺乏良好的用户体验和可访问性,将会大大降低其吸引用户的能力。因此,为了提高网站的可访问性…

    编程 2024-10-08
  • php留言板php留言板(PHP制作留言板)

    本文目录一览: 1、用PHP完成留言板功能 2、求一步一步教PHP留言板制作方法 3、php留言板的回复怎么做? 用PHP完成留言板功能 留言表:留言ID、用户ID、内容、发表时间…

  • iperf命令详解及使用方法

    iperf是一款网络性能测试工具,可以测试TCP和UDP带宽性能,以及路由器和防火墙的性能。它可以产生不同的流量负载,测试吞吐量、延迟和带宽。 一、iperf命令详解 iperf命…

    编程 2024-10-14
  • Sofa框架详解

    一、Sofa框架教程 Sofa框架是一个基于Spring Boot和Dubbo的分布式SOA框架,其核心是可插拔的Spring Cloud Alibaba和Dobble Mesh,…

    编程 2024-10-04
  • Python实现智能问答,提升用户体验

    现代社会,随着科技的迅速发展,人们对于信息的需求越来越强烈。在这个信息爆炸的时代,人们在寻找和获取所需信息方面经常面临着困难。而智能问答系统则可以为人们提供快速、准确的信息查询服务…

    编程 2024-10-04

发表回复

登录后才能评论