|
1.首先,先了解几个基本概念。(真正要做得了解)
小弟最近正在学习java网络及多线程编程,希望有志同道合的一同学习,待来此发贴
以下是我的一些学习经验,也当是自已总结,希望和有识之士一同讨论学习。
什么是socket?
socket是它允许程序把网络连接当成一个流,可以向这个流写字节,也可以从这个流读取字节。套接字为程序员屏蔽了网络的底层细节,例如媒体类型、信息包的大小、网络地址、信息的重发等。 传输层及以下的数据全部都看不到,它是基于tcp/ip协议
基出上的东西.
什么是协议?
协议是就是规则。例如交通,它就有一套自已的规则.
socket它倒底是处于哪层呢?
socket是会话层的东西,主要为两个会话层实体进行联接,进行的对话连接的管理服务。也就是说你可以建立会话层以上自已的规则。例如表示层,应用层.
2.如何利用socket写程序.
编写时请要加包 import java.net.*
先讲客户端套接字socket的及
常用方法.
1.连接到远程机器。
public Socket(String host ,int port) throws unknownHostException IOException
这个方法建立一个到主机host、端口号为port的套接字,连接到远程主机。
throws throws unknownHostException IOException 执行时出现错误会抛出何种异常。
实例如下:
Socket soc=new Socket (\"www.hudabbs.net\" , 80);
注:
同时soc也同www.hudabbs.net:80绑定了
那就可以利用soc跟www.hudabbs.net开始发送数据了.
2.发送数据。
public OutputStream getOutputStream ( ) throws IOException
返回一个原始的OutputStream,可以从应用程序写数据到套接字的另一端。
OutputStream是一个对像,这里暂时不深究.
通常将它链接到PrintWirter,PrintWirter一个基于字符的类。方法println()和println支持所有类,并能向对像写数据。
实例如下:
Socket soc=new Socket (\"www.hudabbs.net\" , 80);
PrintWriter out = new PrintWriter(soc.getOutputStream(), true);
out.println(\"aaabbcc\");
注:
那就向www.hudabbs.net的80端口发送了aaabbcc及换行
如果用 out.print(\"aaabbcc\");就没有换行.
很明显,80端口http协议,它根本不能理解你的发数据,它也不会做出相应的处理.
3.获得远程服务器地址
public InetAddress getInetAddress ( )
调用Socket对象的getInetAddress ( )方法返回连接到远程主机的地址,如果连接失败,则返回以前连接的主机。
实例如下:
Socket socket = new Socket (\"www.hudabbs.net\" ,80);
InetAddress host =socket.getInetAddress ( );
由于时间关系,今天到此为止。以后会继续发贴,希望有人一起学习,合作。欢迎跟贴。 |
|