Java网络通信之Socket编程
来源:互联网 发布:中国产业数据 编辑:程序博客网 时间:2024/06/05 09:10
一,网络基础简介
1.TCP/IP协议 :
TCP:传输控制协议
IP:互联网协议
2.TCP/IP模型
5 应用层 (HTTP协议)4 传输层 (TCP/IP协议)3 网络层2 数据链路层1 物理层
3.IP地址:
每台机器唯一的标识 ,格式 ***.***.*.*
4,端口:
用于区分不同的应用程序,范围为0~65535,0~1023为系统保留
http:80 ftp:21 telnet:23
二,java中的网络支持
1.InetAddress :用于标识网络上的硬件资源
2, URL:统一资源定位符,通过URL可以直接读取或写入网络上的数据
3,Socket:使用TCP协议实现网络通信的Socket相关的类
4,Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.nio.charset.MalformedInputException;public class InetAddressTest {static BufferedReader br;public static void main(String[] args) throws IOException {try{URL url=new URL("http://www.baidu.com"); br=new BufferedReader(new InputStreamReader(url.openStream(),"utf-8")); String data=br.readLine(); while(data!=null){ System.out.println(data); data=br.readLine(); }}catch(MalformedInputException e){e.printStackTrace();}catch(IOException ioe){ioe.printStackTrace();}finally{if(br!=null){br.close();}}}}
Socket通信实现步骤:
1.创建ServerSocket和Socket
2.打开连接到Socket的输入/输出流
3.按照协议对Socket进行读/写操作
4.关闭输入输出流,关闭Socket
服务器端:
1.创建ServerSocket对象,绑定监听端口
2.通过accept()方法监听客户端请求
3.连接建立后,通过输入流读取客户端发送的请求信息
4.通过输出流向客户端发送响应信息
5.关闭相关资源
客户端:
1.创建Socket对象,指明需要连接的服务器的地址和端口号
2.连接建立后,通过输出流向服务器端发送请求信息
3.通过输入流获取服务器响应的信息
4.关闭相关资源
服务器端:
import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {Socket socket=null;int count=0;try {ServerSocket serverSocket=new ServerSocket(6688);while(true){socket =serverSocket.accept(); ServerThread serverThread=new ServerThread(socket); serverThread.start(); count++; System.out.println("客户端的数量为:"+count);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(socket!=null){socket.close();}}}}
服务器端多线程执行类
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class ServerThread extends Thread {Socket socket=null;BufferedReader br=null;PrintWriter pw=null;public ServerThread(Socket socket){this.socket=socket;}@Overridepublic void run() {// TODO Auto-generated method stubtry {//获取输入流,并读取客户端信息br=new BufferedReader(new InputStreamReader(socket.getInputStream()));String info=null;while((info=br.readLine())!=null){System.out.println(info);}socket.shutdownInput(); //关闭输入流pw=new PrintWriter(socket.getOutputStream());pw.write("欢迎您!,我是服务器端");pw.flush();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(socket!=null)socket.close();if(br!=null)br.close();if(pw!=null)pw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }}
客户端
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;public class Client {public static void main(String[] args) throws IOException {Socket socket=null;PrintWriter pw=null;BufferedReader br=null;try {socket=new Socket("localhost", 6688);pw=new PrintWriter(socket.getOutputStream());pw.write("用户名:tom;密码:456");pw.flush();socket.shutdownOutput();br=new BufferedReader(new InputStreamReader(socket.getInputStream())); String info=null; while((info=br.readLine())!=null){ System.out.println("我是客户端,服务器说"+info); } socket.shutdownInput();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(socket!=null){socket.close();}if(pw!=null){pw.close();}if(br!=null){br.close();}}}}
0 0
- Java网络编程之Socket通信
- Java通信之Socket网络编程
- Java网络通信之Socket编程
- 网络编程之Socket通信(Java)
- 网络通信之Socket编程
- java网络编程之一对一的socket C/S通信
- Java网络编程之Socket通信(一)
- Java网络编程之Socket通信(二)
- 网络编程之Socket通信(Java)进阶版
- Android网络编程之Socket通信
- Android网络编程之Socket通信
- android网络通信之socket编程
- Windows网络编程之Socket通信
- java网络编程Socket通信常见异常
- java网络编程(6):socket通信
- java网络编程基础Socket通信应用
- Java中的网络编程—Socket通信
- Java网络编程之Socket
- ssh的基本原理哦
- C++获取时间的问题
- MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码
- Torch 的安装与基本用法
- Angular开发(十四)-利用angular的http转发、即代理http 请求,处理项目中请求跨域的问题
- Java网络通信之Socket编程
- VIM 配置 ctags
- Linux 的dhcp启动异常之No subnet declaration for eth1 (192.168.48.134)
- 认识端口与计算机入侵防范
- Android 5.X SVG矢量动画机制——Android群英传
- 将you are from shanghai 以shanghai from are you的形式输出
- 为什么每个人都这样匆忙?
- flex弹性布局
- linux简介