java—网络通信socket的例子

使用3dmax Morpher制作Unity表情动画 关于游戏人物的面部表情动画 方案一:如果面部骨骼数丰富的话,可以直接做骨骼动画 方案二:采用变形器(3dmax是Morpher,maya是blendshape)修改相应通道的权重值来做表情动画 本文简述方案二的做法。 说明:本文截图中3dsMax版本为2017。笔者第一次使用3dsMax,欢迎指正。 3dmax中导入人物模型,选择需要变形的对象,即head。当前对象附带skin信息。 ... 阅读详情

Java Socket应用 网络通信 【 socket 】


第一节:网络基础知识
第二节:InetAddress 类:
             此类表示互联网协议 (IP) 地址。 

             InetAddress 的实例包含 IP 地址,还可能包含相应的主机名(取决于它是否用主机名构造或者是否已执行反向主机名解析)。


例子:

package inetaddreaa;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressDom {

	public static void main(String[] args) {
		
		try {
			//根据本机 InetAddreaa 获取信息
			InetAddress address = InetAddress.getLocalHost();
			System.out.println("本机名字:" + address.getHostName());
			System.out.println("IP地址:" + address.getHostAddress());
			System.out.println("对象的原始 IP地址:"+address.getAddress());
			//看API文档
			
		} catch (UnknownHostException e) {		
			e.printStackTrace();
		}
	}

}


第三节:URL常用使用方法:
             理解:URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名。 
             协议为: http (超文本传输协议)。
             资源:www.imooc.com

             端口:8080

例子:

package url;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class URLDom {
	public static void main(String[] args) {

		try {
			//实例化URL			
			URL url= new URL("http://www.baidu.com");
			//输入流
			InputStream is = url.openStream();
			//将输入流转换为字符流
			InputStreamReader isr = new InputStreamReader(is,"utf-8");
			//为字符流添加缓冲流
			BufferedReader br = new BufferedReader(isr);
			//读取数据
			String date = br.readLine();
			//输出 行
			while( date != null ){
				System.out.println(date);
				date=br.readLine();
			}
			//关闭资源
			br.close();
			isr.close();
			is.close();

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}


第四节:TCP 编程 【 传输控制协议 】
   概念:传输层,以字节流的方式发送数据。

             是一种面向连接的、可靠的、基于字节流的传输层通信协议。


服务器端【ServerSocket】
   1.创建服务器端,并制定绑定端口。     
   2.调用 accept() 方法调用 accept() 方法侦听并接受的连接。   
   3.获取输入流,并读取客户端信息。   
   4.获取输出流,向客户端端发送信息 。

   5.先关闭输入流,关闭资源。


客户端【Socket】
    1.创建客户端,制定服务器地址和端口 。     
    2.获取输出流,向服务器端发送信息 。  
    3.获取输入流,并读取服务器信息。    

    4.先关闭输出流,流关闭资源。    


TCP 编程之多线程连接:
     基本步骤:
          1.服务器端创建ServerSocket,循环调用accept() 等待客户端连接。
          2.客户端很粗昂贱一个socket并请求和服务器端连接。
          3.服务器端接受客户端的请求,创建socket与客户端建立专线连接。
          4.建立连接的两个socket在一个单独的线程上对话。

          5.服务器端需继续等待新的连接。

例子:


1、服务器端

package tcp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

	public static void main(String[] args) {
		
		try {
			//1创建服务器,并制定绑定端口
			ServerSocket ss = new ServerSocket(8080);
			//2调用accept()方法侦听并接受的连接。
			System.out.println("***服务器已经启动,等待客户端连接***");
			Socket sk = ss.accept();
			//3获取输入流,获取客户端信息
		    InputStream is = sk.getInputStream();
		    //转换字符流
		    InputStreamReader isr = new InputStreamReader(is);
		    //4为输入流添加缓冲
		    BufferedReader br = new BufferedReader(isr);
		    //输出
		    String io=null;
		    //5获取客户端信息
		    while( (io=br.readLine()) != null){
		    	System.out.println("我是服务器,然后客户端说:" + io);
		    	io=br.readLine();
		    }
		    //关闭输入流
		    sk.shutdownInput();
		    
		    
		    //获取输出流,向客户端发送信息
		    OutputStream ops= sk.getOutputStream();
		    //打印流
		    PrintWriter pw = new PrintWriter(ops);
		    pw.write("您好!欢迎您!");
		    //清空缓冲区数据
		    pw.flush();	
		    
		    //关闭资源
		    ops.close();
		    pw.close();
		    br.close();
		    isr.close();
		    is.close();
		    sk.close();
		    ss.close();
					
		} catch (IOException e) {			
			e.printStackTrace();
		}

	}

}


2、客户端

package tcp;

import java.io.*;
import java.net.*;

//还有一种就是和多线程结合在一起 

public class ServerConter {

	public static void main(String[] args) {
		
		try {
			//创建客户端Socket,指定服务器端口,地址
			Socket sr = new Socket("localhost",8080);
			//获取输出流,向服务器发送信息
		    OutputStream ops = sr.getOutputStream();
			//打印流
		    PrintWriter pw = new PrintWriter(ops);
		    //字符输出流
		    pw.write("用户名:陈郑游;密码:123");		  
		    //清空缓冲区数据
		    pw.flush();
		    //关闭输出流
		    sr.shutdownOutput();
		    
		    //获取输入流,读取服务器的信息
		    InputStream ips = sr.getInputStream();
		    //InputStreamReader isr = new InputStreamReader(ips);
		    BufferedReader buf = new BufferedReader(new InputStreamReader(ips));		    
		    String io=null;
		    //获取客户端信息
		    while( (io=buf.readLine()) != null){
		    	System.out.println("我是客户端,然后服务器说:" + io);
		    	io=buf.readLine();
		    }
		    //关闭资源
		    ips.close();
		    buf.close();
		    pw.close();
		    ops.close();
		    sr.close();
			
		} catch (UnknownHostException e) {			
			e.printStackTrace();
		} catch (IOException e) {		
			e.printStackTrace();
		}

	}

}


第五节:UDP 编程
   理解:UDP协议是无连接,不可靠,无序的。
             DategramPacket:数据包

             DataGrmSocket:进行通信到端口的通信的类


实现步骤:
     服务器端:
         1,创建DatagramSocket,指定端口号。
         2,创建DatagramPacket。
         3,接受客户端发送的数据信息。
         4,读取客户端数据。

         5,关闭资源。

     客户端:
         1,定义服务器的地址,端口号,数据,发送信息。
         2,创建DatagramPacket,包含将要发送的信息。
         3,创建DatagramSocket。
         4,向服务器端发送数据。

         5,关闭资源。


例子:

1、服务器端

package udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class Server {
    public static void main(String args[]){
    	
    	try {
    		/*接收客户端响应*/   		
    		//1,创建DatagramSocket,指定端口号。
			DatagramSocket socket = new DatagramSocket(8888);
			//2,创建DatagramPacket。
			byte date[] = new byte[1020];
			DatagramPacket packet = new DatagramPacket(date, date.length);
			System.out.println("***服务器已经启动,等待客户端连接***");
			//3,接受客户端发送的数据信息。		
			socket.receive(packet); //接收之前一直堵塞
			//4,读取数据。
			String info = new String(date, 0, packet.getLength());
			System.out.println("我是服务器,客户端说:" + info);
			//
			socket.close();
						
			/*向客户端发送响应*/			
			//1,定义客户端的地址,端口号,数据,发送信息。
			InetAddress iass = packet.getAddress();
			//地址
			int port=8888;  
			byte date2[] ="服务器说:欢迎您!".getBytes();  //转换为字节数组
			//2,创建DatagramPacket,包含将要发送的信息。
			DatagramPacket packet1 = new DatagramPacket(date2, date2.length, iass, port);
			//3,创建DatagramSocket。
			DatagramSocket soc = new DatagramSocket();
			//4,向客户端端发送数据。				
			soc.send(packet1);	
			
				
		} 
    	catch (SocketException e) {			
			e.printStackTrace();
		}
    	catch (IOException e) {				
			e.printStackTrace();
		}		
    }

	
}

2、客户端

package udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class Socket {

	public static void main(String[] args) {
		
		try {
			/*向服务器端发送响应*/			
			//1,定义服务器的地址,端口号,数据,
			InetAddress inet =InetAddress.getByName("localhost");
			//地址
			int port=8888;  
			byte date1[] ="用户名:小游;密码:888".getBytes();  //转换为字节数组
			//2,创建DatagramPacket,包含将要发送的信息。
		    DatagramPacket packet = new DatagramPacket(date1, date1.length, inet, port);		   		    
		    //3,创建DatagramSocket。
			DatagramSocket socket = new DatagramSocket();
			//4,向服务器端发送数据。				
			socket.send(packet);
							      					
			/*接收服务器端的响应*/			
			byte date2[] = new byte[1020];
			//1,创建DatagramPacket。
			DatagramPacket packet2 = new DatagramPacket(date2, date2.length);
			//2,接受服务器端发送的数据信息。		
			socket.receive(packet2);
			//3,读取数据。
			String info2 = new String(date2, 0, packet2.getLength());
			System.out.println("我是客户端,服务器说:" + info2);
			//4,关闭资源
			socket.close();
			
		    } 
		catch (UnknownHostException e) {
			e.printStackTrace();
		}
		catch (SocketException e) {				
			e.printStackTrace();
		}
	    catch (IOException e) {				
			e.printStackTrace();
		}		  
	}

}



超声波雷达探测车位及信号处理方法 在APA泊车中用到了超声波雷达,第一次接触,总结研究之。 阅读详情

相关推荐

帆软FineBI考试题

Flint 补录表,有批次删除功能。在分析主题内添加数据时能够选择批量添加数据。插件安装过程中有报错提示需要下载 Fine I for Excel 运行环境进行修复,修复完毕后重新安装插件。图例显示支持自定义设置,且图例标题支持隐藏显示。finebi中的指标如果想进行维度区间/真的自定义分组,不能直接拖拽到组建区域中需要先转化为维度方可进行指标分组。excel报表不支持分页。

Davina_yu的博客 1609

TCP/IP协议学习笔记(五)Windows下多线程多客户端的TCP服务端的实现

服务端 注意下多线程下共享内存,还有printf的使用,需要线程之间同步,同一时间只能有一个线程使用。 #include <stdio.h> #include <windows.h> #include <process.h> #pragma comment(lib,"ws2_32.lib") /* 服务端相关配置 */ #define SERVER_IP "127.0.0.1" //服务端IPV4地址 #define SERVER_PORT 1234 //服务端

熠熠L的博客 4716

python音频信号分析

声音以具有诸如频率、带宽、分贝等参数的音频信号的形式表示,典型的音频信号可以表示为幅度和时间的函数

MAY的博客 2789

基于Java实现客户端与服务器的多线程交互

首先实现客户端 1.新建一个客户端对象socket,绑定服务器 2.使用socket对象的getOutputStream方法来获取网络字节输出流OutputStream对象 3.使用OutputStream对象的Write方法来给服务器发送数据 4.使用socket对象的getInputStream方法来获取网络字节输入流InputStream对象 5.使用网络字节输入流InputStream的方法read,来读取服务器发送来的数据 6.释放资源 public static void main(Stri

java小新 1260

告别ROS1!在Ubuntu 22.04上为VINS-Fusion适配ROS2 Humble的完整踩坑记录

本文详细记录了在Ubuntu 22.04上将VINS-Fusion从ROS1迁移到ROS2 Humble的完整过程,包括环境搭建、依赖管理、核心代码适配及性能优化。通过实战案例和调试技巧,帮助开发者高效解决迁移过程中的常见问题,提升系统稳定性和性能。

weixin_42628688的博客 281

勒索病毒c语言源代码,勒索病毒原理解析

一、编程思路什么是勒索病毒:遍历你电脑上所有文件,并且用加密算法加密,然后把加密秘钥发送到自己邮箱里,弹出窗口。工具:操作系统API,加密算法思路:1.程序设计 思路规划清楚1.1 加密单个文件1.2 遍历文件系统并加密文件2.工程实现: 编程3.测试上线 :、测试欢迎加入学习群【892643663】,获取全套免费C/C++企业实战级课程资源(素材+源码+视频)和编译大礼包二、代码解析//文件遍...

weixin_35355756的博客 6604

服务端使用多线程处理客户端请求

关注一下这里的创建子线程的for循环,首先判断了一下 arr[i] 是否为-1,如果是才创建线程,否则跳出 for() 循环,重新阻塞等待accept()连接。子线程处理函数中,使用指针 p 接收 arg 参数的目的是获得指向数组 arr 的指针,以便在关闭客户端后重新将相应位置,重新置为 -1.服务端的显示没有变化,说明没有连接成功(我没有对连接不成功的做打印,只对成功的做了打印)仔细观察一下,新连接的客户端,分配到的 通信文件描述符是 7和5 符合我们的设想3。< 2 和 3>再,关一个再连。

qq_45285738的博客 1152

STM32F407单一定时器输出4路不同频率及占空比的PWM波

STM32F407单一定时器输出4路不同频率及占空比的PWM波

qq_43868701的博客 4920

Java Socket实用样例

一、前言 最近用到了Java的Socket通信。 在搜索用法的过程中,发现好多都是用System.in举例的; 但是实际工作中,并不是用System.in从控制台输入消息的,不太好用。 以下是个人从工作中总结的Socket实用代码样例。 二、服务器端(ServerSocket) 服务器端等待Socket连接的建立,接收Socket请求报文,处理后给Socket客户端返回响应报文。 1.SocketThread类,主要处理类,用来接收Socket请求报文、处理、返回响应报文。 @Slf4j public cl

BHSZZY的博客 4261

【2024遥感应用组一等奖】基于时空融合和水量平衡法的若尔盖高原水源涵养功能评价

考虑到水源涵养的概念和尺度特征、数据的可获得性、模型的模拟精度等,构建了一种基于遥感、气象和水量平衡原理的草原湿地水源涵养评价方法,估算若尔盖湿地近23年(2000-2022)来的水源涵养量。若尔盖湿地是我国黄河源区的重要水源地,所以本研究以若尔盖湿地的水源涵养功能评估为科学问题,基于遥感数据、GIS数据等,利用水量平衡原理,发展计算简单、便捷、数据易获取的“水源涵养估算方法”,科学估算若尔盖湿地水源涵养服务量,探究其时空动态变化趋势及其影响因素;公式中,Z1和Z2为两个不同高度面的高度,u为摩擦速率;

JData_Engineer的博客 240

YOLOv8改进-利用图像去雾网络UnfogNet提升检测精度的探索【附核心模块代码】

YOLOv8-UnfogNet联合模型的提出为目标检测和图像去雾领域提供了一个新的思路。通过将图像去雾网络和目标检测网络结合,不仅可以提升在恶劣天气下的目标检测精度,还能够为实际应用中的自动驾驶、监控安防等领域带来更强的鲁棒性和适应性。随着去雾技术和目标检测算法的不断发展,我们相信,这种联合方法将在多个领域中获得更加广泛的应用,并为进一步提升图像质量和检测精度做出重要贡献。

一键难忘的博客 3203

Java Socket几个简单的入门示例

Socket是面向网络传输层的编程接口,需要程序员直面网络连接,字节流的读写,数据包的解析等。其难点在于服务端的迸发性能处理、数据格式的定义与拆解,在程序底层的算法上会有一定要求,更加考验程序员的编程技巧。

杂七杂八 5236

自动驾驶算法/规划决策控制算法面经汇总、学习路线、面经心得

自动驾驶算法学习路线,面试求职大全

qq_41667348的博客 1万+

基于java socket来进行网络通信的小例子

在之前分析zookeeper源码的过程当中,有两个地方使用到了基于java socket进行通信的地方 第一个地方是在集群启动时,集群节点之间会发起leader投票选举,此时zookeeper底层是基于java socket来进行网络通信的,感兴趣的小伙伴可以看手把手带你撸zookeeper源码-zookeeper启动(三)(zookeeper选举时是如何基于socket建立连接的)这篇文章 第二个地方是当集群中新加入一个zk节点或者某个节点宕机恢复启动的时候,需要恢复数据,并且从leader中同步..

badly的博客 401

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java笔记—网络通信socket的例子

Java Socket应用 网络通信 【 socket 】 第一节:网络基础知识 第二节:InetAddress 类: 此类表示互联网协议 (IP) 地址。 InetAddress 的实例包含 IP 地址,还可能包含相应的主机名(取决...

chihuo2428的博客 150

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java 中通信接口

你这个程序使用的是UDP 协议:用于发送和接收数据包(Socket 实例):用于封装发送或接收的数据内容JavaSocket:表示客户端或服务端通信时的“套接字”:服务端专用,用于监听客户端连接请求。

yualian的博客 915

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java中Socket通信

简介Socket又称”套接字”,应用程序通常通过”套接字”向网络发出请求或者应答网络请求。 在Java中,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端

little_nai的博客 392

python java 用socket通信

python 客户端 代码 import socket import sys # ip为string, port 为int, msg为string def socket_client(ip, port, msg): try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(...

julicliy的博客 313

java 服务端 c_java socket与 c socket通讯 java服务端

Jclient.java: publicclassJclient{ publicstaticvoidmain(String[]args){ SocketJavaSocket=null; DataOutputStreamos=null; DataInputStreamis...

weixin_36316102的博客 85

php socket java_java与php通过socket通信的实例教程

demo实现的简单功能是,接受PHP端写入的字符串,然后原样返回给输出端。代码如下:代码如下:import java.io.*;import java.net.*;publicclassServer {publicstaticvoidmain(String[] args) throws IOException{System.out.println("Server started !\n");Ser...

weixin_29876033的博客 180

【android】Socket简单用法

转自:http://www.cnblogs.com/harrisonpc/archive/2011/03/31/2001565.html Socket通常也称做”套接字“,用于描述IP地址和端口,废话不多说,它就是网络通信过程中端点的抽象表示。值得一提的是,Java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。这是两个封装

baidu_15368407的专栏 284

java socket 服务器多线程 数据转发的研究实践

项目中借鉴了以下资料: https://www.cnblogs.com/whenever/p/5526420.html   https://www.cnblogs.com/jpwz/p/5715852.html   https://www.cnblogs.com/sddychj/p/6102192.html   https://zzk.cnblogs.com/s/blogpost?K...

weixin_33971977的博客 98

java客户端和服务端使用实例_Java基于socket实现的客户端和服务端通信功能完整实例...

本文实例讲述了Java基于socket实现的客户端和服务端通信功能。分享给大家供大家参考,具体如下:以下代码参考马士兵的聊天项目,先运行ChatServer.java实现端口监听,然后再运行ChatClient.java客户端实例ChatClient.javapackage socketDemo;import java.awt.*;import java.awt.event.*;import ja...

weixin_42127775的博客 179

Socket简单用法

Socket通常也称做”套接字“,用于描述IP地址和端口,废话不多说,它就是网络通信过程中端点的抽象表示。值得一提的是,Java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。这是两个封装得非常好的类,使用起来很方便!     下面将首先创建一个SocketServer的类作为服务端如下,该服务端实现了多线程机制,可以在特定端口处监

448

不允许对非连接的套接字执行操作_Java Socket:飞鸽传书的网络套接字

在古代,由于通信不便利,一些聪明的人就利用鸽子会飞且飞得比较快、会辨认方向的优点,对其进行了驯化,用来进行消息的传递——也就是所谓的“飞鸽传书”。而在 Java 中,网络套接字(Socket)扮演了同样的角色。套接字(Socket)是一个抽象层,应用程序可以通过它发送或接收数据;就像操作文件那样可以打开、读写和关闭。套接字允许应用程序将 I/O 应用于网络中,并与其他应用程序进行通信。网络套接字是...

weixin_39962675的博客 315

flex与java之间socket通信的教程1

(一)连接 &nbsp; 目的:实现flex和java的连接 &nbsp; 服务端代码:Server1.java &nbsp; =============================================================================== &nbsp; &nbsp; import java.net.*; &nbs...

saimens 171
上一篇: java—网络通信socket的例子
下一篇: Java集合类详解之例子
AndyChen9988
博客等级 码龄11年 276粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值