Java socket通信中,当服务器端接受到监听客户端的请求后,如何主动给客户端发送数据

Java socket通信中,当服务器端接受到监听客户端的请求后,如何主动给客户端发送数据,第1张

ServerSocket ss = new ServerSocket();
Socket s = ssaccept();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(sgetOutputStream()));
bwwrite("hello!");

业务需要这么复杂吗???如果你要实现服务器和客户端都可以向对方发送消息,而不等待对方应答,只需要把InputStream和OutputStream分别放在两个不同线程里就行了,即是说把接收流与发送流分别用一个线程监听处理。如果要实现不分客户端服务器的话,用UDP通信即可
补充回答:如果不涉及到MIME,只是收发简单文本邮件。就会比较简单。因为就像你说的,smtp和pop3协议就是文本格式的。你用Socket建立连接后,就像读文件一样,一行一行的读数据,然后按照协议分析数据格式。例如如果开始时USER那么后面可能跟的就是用户等。
就是一个字符串解析和匹配的过程。网上好像有这类代码,自己找一个学习一下。我以前用C在68k上作过,不是很难。不过代码已经没有了。
你的是邮件客户端,功能类似于outlook,foxmail等,如果你能上网,就不需要邮件服务器,直接用自己的邮件账号来测试,例如如果你有一个sina的邮件账户,就可以从sina服务器收发邮件。
不过为了测试方便,还是上网去收一个邮件服务器把。例如foxmail server等。网上有教程,可以配置好的。
对于编程,既然要求用socket编写,那么就要熟悉java的socket编程,这部分倒是很简单。可能还需要看看多线程部分。
另外,你需要学习一下, smtp和pop3这两个网络协议的内容,因为你需要解析这两个协议。如果需要收发代附件的,还需要看mime的内容,不过估计不需要。
其实java有自己的类库javamail,可以实现手法邮件,功能很强大。不过既然要求必须用socket,那就不能这个了。
说的太罗嗦了。总结一下:
1)配置邮件服务器,搭建测试环境
2)熟悉java的socket编程、 Swing编程(编写界面)、多线程(选用)
3)熟悉smtp和pop3的内容(内容很多,了解基本的就可以)
网上应该有类似代码,可以用来参考。

socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。
socket的英文原义是“插槽”或“插座”,就像我们家里座机一样,如果没有网线的那个插口,电话是无法通信的。Socket是实现TCP,UDP协议的接口,便于使用TCP,UDP。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13494943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-18
下一篇 2023-08-18

发表评论

登录后才能评论

评论列表(0条)

保存