java SE基础(TCP Socket通信)
2016-03-15 21:43
495 查看
1。socket对象的两种初始化方法*/
/* 方法一 */Socket socket = new Socket() //创建无参socket对象
SocketAddress socketaddress = new InetSocketAddress(String hostname , int port)//创建SocketAddress对象,实现 IP 套接字地址(IP 地址 + 端口号)或(主机名 + 端口
socket.connect( socketaddress ) //将此套接字连接到服务器
/* 方法二 */
Socket socket = new Socket(String hostname , int port)//创建对象的同时进行初始化
2。socket的流操作*/
public InputStream getInputStream(){} //返回套接字的网络输入流public OutputStream getOutputStream(){} //返回套接字的网络输出流
3。ServerSocket的两种初始化方法*/
/* 方法一 */ServerSocket serversocket = new ServerSocket() //创建无参对象
SocketAddress socketaddress = new InetSocketAddress(int port) //创建SocketAddress对象
serversocket.bind(socketaddress) //绑定到特定地址
/* 方法二 */
ServerSocket serversocket = new ServerSocket(int port)
4。ServerSocket的操作方法*/
public Socket accept(){} //侦听并接受到此套接字的连接,返回Socket对象5。TCP socket通信过程
(1)服务器端创建一个ServerSocket对象,指定服务器端口号,ServerSocket对象调用accept()方法,等待客户端的连接请求;(2)客户端创建一个Socket对象,指定服务器的主机和端口号,向服务器发送连接请求;
(3)服务器端收到客户端的连接请求,建立一条TCP连接,由accept()方法返回一个Socket对象,与客户端的Socket对象进行通信;
(4)服务器端和客户端的socket对象各自调用socket的流操作方法,向对方发送数据;
(5)通信结束后,先后调用close()方法,关闭socket和serversocket */
6。例如:*/
/* 服务器端 */ import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; public class MyServerSocket { public static final int SERVER_PORT = 48123; //定义服务器端口号 //定义接收文件的方法 public static void receiveFile(Socket socket) throws IOException { String desFile = "java.java"; //待写入文件 DataInputStream dis = new DataInputStream(socket.getInputStream()); //定义网络输入流,接收来自客户端的数据 FileOutputStream fos = new FileOutputStream(desFile); //定义文件输出流,将接收到的数据写到本地文件 byte[] buffer = new byte[512]; //定义输入缓冲区 int length = 0; //定义缓冲区有效长度 System.out.println("开始接收数据..."); while( (length = dis.read(buffer)) != -1 ){ //读数据 fos.write(buffer , 0 , length); fos.flush(); } System.out.println("完成接收:"+desFile); fos.close(); dis.close(); socket.close(); } public static void main(String[] args) throws IOException { ServerSocket serversocket = new ServerSocket(); //创建ServerSocket对象 serversocket.bind(new InetSocketAddress(SERVER_PORT)); System.out.println("开始监听..."); Socket socket = serversocket.accept(); System.out.println("有链接"); receiveFile(socket); serversocket.close(); } } /* 客户端 */ import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.net.Socket; public class MyClient { public static final int SERVER_PORT = 48123; //定义服务器端口号 public static void main(String[] args) throws IOException { /* Socket socket = new Socket(); //建立套接字连接 socket.connect(new InetSocketAddress("127.0.0.1", SERVER_PORT));*/ Socket socket = new Socket("localhost", SERVER_PORT); DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); //网络输出流 String srcFile = "java提炼.java"; FileInputStream fis = new FileInputStream(srcFile); //文件输入流 byte[] buffer = new byte[512]; //缓冲区 int length = 0; //缓冲区有效长度 System.out.println("开始读取"); while( (length = fis.read(buffer)) != -1){ //读取文件,并写入网络输出流 dos.write(buffer, 0, length); dos.flush(); } System.out.println("写入完毕"); dos.close(); fis.close(); socket.close(); } }
相关文章推荐
- http和https的差别
- TCP的流量控制
- python之网络爬虫
- java SE基础(URL访问网络资源)
- HTTP 单线程 模拟迅雷下载
- TCP/IP协议三次握手与四次握手流程解析
- 手写服务器httpserver_准备_Socket入门_htmlJAVA195-196
- TCP和Http的区别!我都搞懂了,你就别迷糊了!
- Okhttp
- android 网络实时监听网络状态变化 及 网络类型判断
- HTTP、TCP、UDP、Socket
- 新博客(http://www.cnblogs.com/shentr/)
- 发布b3log-solo后,访问http://localhost:8080/b3log-solo/提示错误为staticServePath Error。
- [网络流24题][CODEVS1922]骑士共存问题(最大流)
- HTTP协议是做什么的
- BZOJ_P3345 PKU2914 Minimum Cut(网络流最小割)
- Android网络开发之HttpURLConnection
- VMware8.0虚拟机中安装Ubuntu12.04使用NAT设置连接网络
- 深入理解HTTP Session
- 北京网络赛G BOXES 状态压缩+有序BFS+高维数组判重