Java使用Socket进行通信
什么是Socket
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
使用UDP协议编写Socket
UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议
UDP缺点:不可靠,不稳定
因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。
UDP编程主要用到两个类DatagramPacket和DatagramSocket
具体代码:
服务端:
package cn.socket; import java.net.DatagramPacket; import java.net.DatagramSocket;
import java.net.InetAddress; public class ServiceSocket {
/*
*接收客户端发送的信息
*/
public static void main(String[] args) throws Exception {
//创建sockpt对象,并传入端口号 与客户端对应
DatagramSocket ds=new DatagramSocket(120);
//接收数据
byte [] by=new byte[1024];
int length=by.length;
DatagramPacket dp=new DatagramPacket(by, length);
ds.receive(dp);
//获取IP地址
byte [] bys=dp.getData();
int le=dp.getLength();
InetAddress inAddress=dp.getAddress();
String ip = inAddress.getHostAddress();
String s = new String(by, 0, length);
System.out.println(ip + "---" + s);
//释放资源
ds.close(); } }
客户端:
package cn.socket; import java.io.BufferedReader; import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; public class ClientSocket {
/*
* 向服务端发送信息
*/
public static void main(String[] args) throws Exception {
//创建socket对象
DatagramSocket ds=new DatagramSocket();
//创建流
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//封装数据
String line = br.toString();
byte [] by=line.getBytes();
int num=by.length;
//IP地址
InetAddress address=InetAddress.getByName("192.168.60.204");
//端口号
int port=120;
//发送数据
DatagramPacket dp=new DatagramPacket(by,num,address, port);
ds.send(dp);
//关闭资源
ds.close();
} }
Java使用Socket进行通信的更多相关文章
- Flex通信-与Java实现Socket通信实例
Flex通信-与Java实现Socket通信实例 转自:http://blessht.iteye.com/blog/1136888 博客分类: Flex 环境准备 [服务器端] JDK1.6,“ja ...
- Java NIO Socket 非阻塞通信
相对于非阻塞通信的复杂性,通常客户端并不需要使用非阻塞通信以提高性能,故这里只有服务端使用非阻塞通信方式实现 客户端: package com.test.client; import java.io. ...
- java socket报文通信(一)socket的建立
java socket报文通信(一) socket的建立 今天来和大家分享一下java中如何使用socket进行通信.先来啰嗦两句,看看Tcp/ip和udp: TCP是Transfer Contro ...
- Java Socket应用---通信是这样练成的
网络基础简介 Java 中网络相关 API 的应用 Java 中的 InetAddress 的应用 Test01.java package com.imooc; import java.n ...
- java的socket通信
本文讲解如何用java实现网络通信,是一个非常简单的例子,我比较喜欢能够立马看到结果,所以先上代码再讲解具体细节. 服务端: import java.io.BufferedReader; import ...
- Java的Socket通信----通过 Socket 实现 TCP 编程之多线程demo(2)
JAVA Socket简介 所谓socket 通常也称作”套接字“,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过”套接字”向网络发出请求或者应答网络请求. import java.io ...
- 【Java TCP/IP Socket】深入剖析socket——TCP通信中由于底层队列填满而造成的死锁问题(含代码)
基础准备 首先需要明白数据传输的底层实现机制,在http://blog.csdn.net/ns_code/article/details/15813809这篇博客中有详细的介绍,在上面的博客中,我们提 ...
- Java:Socket通信
Socket通常也称作"套接字".用于描写叙述IP地址和port,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ServerS ...
- Java的Socket通信简单实例
服务端 package testlxd; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...
随机推荐
- spark-sql(spark sql cli)客户端集成hive
1.安装hadoop集群 参考:http://www.cnblogs.com/wcwen1990/p/6739151.html 2.安装hive 参考:http://www.cnblogs.com/w ...
- Xcode工程编译错误之iOS开发之Sending '__strong typeof (xxx)' (aka 'xxxx *__strong') to parameter of incompatible type 'id<xxx>'
iphone开发出现警告: Sending '__strong typeof (xxx)' (aka 'xxxx *__strong') to parameter of incompatible ty ...
- Python+Django 后台view异步接不到参数问题
因为后台需获取前台的多个ID参数(checkbox) //获取checkbox的每个ID并放到数组内var _items = []; var items = document.getElementsB ...
- CoreData 执行executefetchrequest卡死解决办法
在大量使用GCD和block以后发现程序会卡死在executefetchrequest执行. 反复测试无果.添加锁也无效.想来想去没发现问题. 容忍了就当人品问题.2天以后实在忍无可忍. 替换perf ...
- Redis入门到高可用(十七)—— 持久化开发运维常见问题
1.fork操作 2.子进程开销和优化 3.AOF阻塞
- 小程序 切换到tabBar页面不刷新问题
小程序跳转的几种方式有wx.navigateTo,wx.redirectTo,wx.reLaunch,wx.switchTab等.下面我们重点研究切换到tabBar的两种方式. wx.switchTa ...
- word2vec:将bin转换为txt
转自:https://blog.csdn.net/u011684265/article/details/78024064 from gensim.models import word2vec mode ...
- 第十二届GOPS全球运维大会2019深圳站即将开幕
第十二届 GOPS 全球运维大会深圳站 会议召开时间:2019年4月12日-13日 会议召开地点:深圳圣淘沙酒店(翡翠店) 会议主办单位:高效运维社区 票务合作伙伴:活动家 会议报名地址:https: ...
- [ Build Tools ] Repositories
仓库介绍 http://hao.jobbole.com/central-repository/ https://my.oschina.net/pingjiangyetan/blog/423380 ht ...
- 泛型-----键值对----映射 hashmap--entry中key value 链表
connection map 集合框架 * java.util.Collection *集合与数组相似,也是可以保存一组元素,并且提供了操作元素的相关方法. *collection是所有集合的顶级接口 ...