套接字通信

socket点对点通信应用:qq,游戏,硬件交互有两种通信方式:tcp(面向流通信) udp(数据报通信)端口:出入数据的门系统向应用层开发:1000-9999

大家好,感谢邀请,今天来为大家分享一下套接字通信的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

应用:QQ、游戏、硬件交互

有两种通信方式:tcp(面向流的通信)udp(数据报通信)

端口:数据进出的门

系统开发到应用层:1000-9999

TCP协议下的流式通信

服务器思路:

1 建立渠道

ServerSocket 服务器=new ServerSocket(端口);

2 等待客户端发送请求

套接字客户端=服务器.accept();

3 收到请求后读取消息

BufferedReader reader=new BufferedReader(new InputStreamReader(client.getInputStream()));

String xx=reader.readLine();

4 向对方发送消息

PrintWriter print=new PrintWriter(socket.getOutputStream());

print.println(要发送的消息);

print.flush();

5 关闭流和通道

客户想法:

1 与服务器建立连接

Socket sock=new Socket(服务器ip地址,端口);

2 向对方发送消息

PrintWriter print=new PrintWriter(socket.getOutputStream());

print.println(要发送的消息);

print.flush();

3.接收对方消息

BufferedReader reader=new BufferedReader(new InputStreamReader(client.getInputStream()));

String xx=reader.readLine();

4 关闭流和通道

1 网络通信的目的和特点

2socket通信的两种形式

1 tcp/ip —多线程组合

2udp

3 URL编程URI

1 网络通信的目的和特点

1 点对点通信(地址)

2 使用聊天四人游戏两人游戏

硬件交互(智能家电、电器远程控制)

端口:1~65535

软件:1000~9999

TCP/IP协议通信流程

一台服务器:

1 ServerSocket 服务器=new ServerSocket(5000);

2 等待别人连接到我Socket client=server.accept()

3 阅读消息

InputStream is=client.getInputStream();

BufferedReader reader=new BufferedReader( new InputStreamReader(is));

reader.readLine();

4 发送消息

OutputStream os=clinet.getOutputStream();

PrinterWriter ww=new PrinterWriter(os);

ww.println(‘xxx’);

ww.flush();

5: 关闭相关资源

流动

走道

服务器

两个客户,

1 套接字cok=new Socket(‘127.0.0.1’,5000);

2 发送消息

OutputStream os=cok.getOutputStream();

套接字通信

PrinterWriter ww=new PrinterWriter(os);

ww.println(‘xxx’);

3 阅读消息

InputStream is=cok.getInputStream();

BufferedReader reader=new BufferedReader( new InputStreamReader(is));

reader.readLine();

5: 关闭相关资源

流动

走道

交流内容:

读取和写入对象:

序列化:ObjectInputStream/ObjectOutputStream

用户信息可序列化

ObjectOutputStream xx=新ObjectOutputStream(新FileOutputStream(D:/xxxxs))

xx.writeObject(用户信息)

套接字通信

1BufferedReader PrintWriter发送短信

2 ObjectInputStream/ObjectOutputStream对象通信

3 FileInputStream/FileOutputStream 图片

4 多线程

服务器端–》socket–读写消息

—》socket–读写消息

—》socket–读写消息

多线程

UDP的特点:无需建立通道,部分客户端和服务器,效率高,但不安全

DatagrameSocket 对象用于发送和接收数据报

数据报包数据

tcp特性:需要建立连接、关闭连接、

安全稳定但效率较低

接收消息的流程:

1 DatagrameSocket ds=new DatagrameSocket(5000);

2

byte[] arr=新字节[1024];

DatagramePacket packet=new DatagramePacket(arr,arr.length);

ds.接收器(数据包);

3 次浏览

String str=new String(packet.getDatas(),0,packet.getDatas().length)

发送消息:

1 DatagrameSocket ds=new DatagrameSocket();

2 DatagramePacket packet=new DatagramePacket(数据字节[],数据长度,ip地址InetAddress,端口);

ds.send(数据包);

协议:

tcp/ip: 应用层(http ftp) 传输层(tcp udp) 网络层(ip) 数据链路层(link)

tcp: 建立连接关闭连接效率低安全可靠

udp:不需要建立连接,效率高且不安全

InetAddress对象网络地址对象域名/ip地址

InetAddress add=InetAddress.getByName(‘www.baidu.com’);

add.getHostName();

add.getHostAddress();

InetAddress add=InetAddress.getLocalHost();

端口:1~65532

UDP通信:

发送消息

DatagrameSocket sock=new DatagrameSocket();

DatagramePacket pack=new DatagramePacket(消息字节数组、消息长度、InetAddress对象、端口);

袜子.发送(包);

接收消息

DatagrameSocket sock=new DatagrameSocket(端口);

字节[] arr=新字节[100]

DatagramePacket pack=new DatagramePacket(arr,arr.length);

袜子.接收器(包)

用户评论

套接字通信
我一个人

socket通信真心比直接调用库的方法简单多了,感觉自己掌握了好东西!

    有8位网友表示赞同!

套接字通信
发呆

我一直觉得socket通信太复杂了,今天看这篇文章好像明白了点什么,我是不是该再去翻翻网络编程的书?

    有19位网友表示赞同!

套接字通信
孤岛晴空

虽然现在有现成的RPC框架可以用,但还是得了解socket通信基础原理,毕竟深入理解才是真懂!

    有7位网友表示赞同!

套接字通信
请在乎我1秒

socket 通信真的很强大。可以连接不同的系统和程序,想玩什么就有什么玩法的感觉

    有11位网友表示赞同!

套接字通信
你是梦遥不可及

文章写的不错,通俗易懂,刚开始学习网络编程的人看了应该能快速入门socket通信哦!

    有16位网友表示赞同!

套接字通信
煮酒

我一直在用socket通信开发游戏服务器,感觉真的不容易啊!调试起来很头疼,需要花很多时间和精力。 不过掌握了socket通信的技巧后,开发效率确实会提高一大截!

    有6位网友表示赞同!

套接字通信
苏樱凉

学习socket通信太难了,各种复杂的协议和包,我整个人都要崩溃!感觉这就像个谜题,永远解不开的感觉。

    有13位网友表示赞同!

套接字通信
坏小子不坏

socket 通信虽然强大,但安全性方面还是需要注意的,一定要做好数据加密和安全验证。毕竟网络里到处是潜在的安全威胁

    有14位网友表示赞同!

套接字通信
志平

我之前也写过一些socket通信的代码,发现其实很容易出错,各种连接超时、断线等等问题,真是让人头疼! 感觉这篇文章很有用的知识点!

    有10位网友表示赞同!

套接字通信
冷风谷离殇

socket 通信真的太香了! 可以开发多么酷炫的小应用啊! 我想去做个客户端和服务器互相通讯的小游戏!

    有8位网友表示赞同!

套接字通信
莫阑珊

这篇文章讲解socket通信的原理很到位,让我对这个话题有了更深入的理解。真是太感谢作者分享这么宝贵的信息了!

    有11位网友表示赞同!

套接字通信
恰十年

socket 通信虽然复杂,但确实非常强大,可以实现很多有趣的项目,比如聊天软件、文件传输等等。我准备尝试一下,看看能不能开发一个简单的项目来学习实践。

    有17位网友表示赞同!

套接字通信
七级床震

socket通信这种底层技术 really 增强了我对网络编程的理解! 感觉学到了一个宝贵的技能!

    有6位网友表示赞同!

套接字通信
醉红颜

这篇文章很适合初学者阅读, 讲解清晰易懂,入门非常便捷。 我现在开始尝试学习socket通信了,希望能够早日掌握这项技能!

    有20位网友表示赞同!

套接字通信
素衣青丝

我曾经尝试过用socket通信开发一个聊天软件, 但是遇到了很多问题,调试起来非常困难,最后还是放弃了。 看这篇文章,感觉自己确实缺少经验和技巧, 估计还需要多加练习!

    有7位网友表示赞同!

套接字通信
迁心

socket 通信的应用场景真的很多! 学习这个知识点 对从事网络编程相关工作的人来说是非常有用的!

    有15位网友表示赞同!

套接字通信
生命一旅程

本以为socket通信会非常复杂,没想到这篇文章讲解得非常通俗易懂,让我初步了解了它的原理和使用方法。

    有20位网友表示赞同!

套接字通信
执妄

Socket 通信 确实是一个很有特色的技术, 可以让你体验到网络编程的魅力! 我很想学习它!

    有14位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/116611.html

(0)
小su's avatar小su
上一篇 2024年9月1日 上午7:00
下一篇 2024年9月1日 上午7:05

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注