JAVA编程实现TCP网络通讯的方法示例
本文实例讲述了JAVA编程实现TCP网络通讯的方法。分享给大家供大家参考,具体如下:
TCP(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
由IETF的RFC793定义,在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。
基于TCP网络通讯实现的类主要有服务器端的ServerSocket用客户端的Socket。
通讯流程:
打开服务器,等待客户端连接-->客户端连接上服务器-->数据通讯。
代码实现步骤:
1.创建服务器端(ServerSocket)对象或客户端(Socket)对象。
2.建立起服务器与客户端连接
3.通过输入输出流进行文件(数据)通讯
4.通讯结束,关闭资源。
一个简单的小例子,服务端:
publicclassSocketServer{
publicstaticvoidmain(String[]args){
try{
//创建一个服务器ServerSocket,并指定端口号为5120
ServerSocketmServerSocket=newServerSocket(5120);
//等待客户端连接
Socketsocket=mServerSocket.accept();
//连接上客户端后,获取客户端输入流信息
InputStreamis=socket.getInputStream();
//通过获取缓冲数据方式来读取文本信息
BufferedReaderbr=newBufferedReader(newInputStreamReader(is));
//获取文本信息
Stringline;
StringBuffersb=newStringBuffer();
while((line=br.readLine())!=null){
sb.append(line);
}
System.out.println(sb.toString());
socket.shutdownInput();
//收到客户端信息后,回复客户端信息
OutputStreamos=socket.getOutputStream();
PrintWriterpw=newPrintWriter(os);
pw.write("收到回复,我是服务端");
pw.flush();
//关闭流通常放在finally中操作
os.close();
br.close();
is.close();
pw.close();
socket.close();
mServerSocket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
客户端:
publicclassClientSocket{
publicstaticvoidmain(String[]args){
try{
//创建客户端Socket,指定主机和端口
SocketmSocket=newSocket("localhost",5120);
//通过输入流向服务器发数据
OutputStreamos=mSocket.getOutputStream();
PrintWriterpw=newPrintWriter(os);
pw.write("来自客户端Socket的数据,你收到了吗?");
pw.flush();
mSocket.shutdownOutput();
//收取服务端的回复信息
InputStreamis=mSocket.getInputStream();
//通过获取缓冲数据方式来读取文本信息
BufferedReaderbr=newBufferedReader(newInputStreamReader(is));
//获取文本信息
Stringline;
StringBuffersb=newStringBuffer();
while((line=br.readLine())!=null){
sb.append(line);
}
System.out.println(sb.toString());
//关闭流通常放在finally中操作
br.close();
is.close();
pw.close();
os.close();
mSocket.close();
}catch(UnknownHostExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
运行时,要先启动服务端,然后启动客记户端,通常网络通讯会与多线程交织在一起。
更多关于java相关内容感兴趣的读者可查看本站专题:《JavaSocket编程技巧总结》、《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。