黑马程序员_基于TCP协议的Socket编程

来源:互联网 发布:为什么手机登不上淘宝 编辑:程序博客网 时间:2024/06/07 06:29

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

java.net包中的两个类Socket和ServerSocket,分别用来实现苏昂想的安全连接的客户端和服务器端,它们都是基于TCP协议进行工作,它们的工作过程就如同打电话的过程,只有双方都接通了,才能开始通话。进行网络通信时,Socket需要借助于数据流来完成数据的传递工作。如果一个应用程序要通过网络向另外一个应用程序发送数据,只要简单的创建Socket,然后将数据写入到与Socket关联的输出流即可。

Socket对象在客户端和服务器端建立连接,构造方法创建套接字,并将此套接字连接至给定的主机和端口。构造方法如下:

Socket s=new Socket (host,port);或者Socket s=new Socket (address,port);

Socket的方法如下:

InetAddress getInetAddress() 返回与Socket对象关联的InetAddress;

int getPort()  返回此Socket对象所连接的远程端口;

int getLocalPort() 返回此Socket对象所连接的本地端口;

inputStream getInputStresm() 返回此套接字关联的InputStream;

inputStream getOnputStresm() 返回此套接字关联的OnputStream;

void close() 关闭Socket

下面用实例演示一下具体的操作流程:模拟用户的登陆功能,实现用户发送登陆用户信息,服务器端显示登录信息并响应给客户端登陆成功。

客户端实现步骤:

(1) 建立连接,连接只想服务器及端口。

(2) 打开Socket关联的输入、输出流。

(3) 想输出流中写入信息。

(4) 从输入流中读取相应信息。

(5) 关闭所有的数据流和Socket。

客户端代码:

Socket socket=new Socket("localhost",8800);
OutputStream os=socket.getOutputStream();
IutputStream is=socket.getIutputStream();
//发送客户的登陆信息,向输出流写入信息
String info="用户名:tom;用户密码:123456";
os.write(info.getBytes());
socket.shutdownOutput();
//接受服务器端的相应,即从输入流读取信息
String reply=null;
BufferedReader br=new BufferedReader(new InputStreamReader(is));
while(!((realy=br.readerLine())=null)){
System.out.println("我是客户端,服务器端的相应为:"+reply);
}
//关闭资源

........

服务器端实现步骤:

(1) 建立连接,监听端口。

(2) 使用accept()方法等待客户端触发通信。

(3) 打开Socket关联的输入、输出流。

(4) 行输出流中写入信息。

(5) 从输入流中读取相应信息。

(6) 关闭所有的数据流和Socket。

服务器端的代码如下:

ServerSocket serverSoclet=new ServerSocket(8800);
Socket socket=serverSocket.accept();
//打开输入/输出流
OutputStream os=socket.getOutputStream();
IutputStream is=socket.getIutputStream();
//获取客户端信息,从输入流读取信息
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info=null;
while(!((realy=br.readerLine())=null)){
System.out.println("我是服务器,客户登录信息为:"+info);
}
//给客户端一个响应,向输出流写入信息
String reply="欢迎你,登陆成功!";
os.write(reply.getBytes());
//关闭资源
.......

以上便是事项上述功能的核心代码,有兴趣的可以运行,以此增进对Socket编程的理解,后续还会对相应的技术进行深入的探讨,敬请关注!

----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima


0 0