TCP传输图片
客户端
package com.net.tcp8;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
/**
* 读取本地图片发送至服务端
*
* @author yuliyang
* @version $Id: ClientDemo.java, v 0.1 2016年11月25日 下午10:39:11 yuliyang Exp $
*/
public class ClientDemo {
public static void main(String[] args) throws IOException {
Socket s = new Socket("192.168.31.222", 10086);
//读取本地图片
InputStream is = new FileInputStream("s.png");
int by = 0;
OutputStream os = s.getOutputStream();
while ((by = is.read()) != -1) {
os.write(by);
}
s.shutdownOutput();
//接收服务端响应
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = br.readLine();
System.out.println("服务端的响应为:" + line);
s.close();
is.close();
}
}
服务端
package com.net.tcp8;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 需求:读取客户端传输过来的图片,并进行copy
*
* @author yuliyang
* @version $Id: ServerDemo.java, v 0.1 2016年11月25日 下午10:18:20 yuliyang Exp $
*/
public class ServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10086);
Socket s = ss.accept();
/**
* 图片为字节流数据
*/
InputStream is = s.getInputStream();
OutputStream os = new FileOutputStream("a.png");
int by = 0;
while ((by = is.read()) != -1) {
os.write(by);
}
//给客户端成功响应
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write("接收图片成功");
bw.close();
os.close();
ss.close();
}
}
网络编程总结(理解)
(1)计算机网络:多*立的计算机用网络通信设备连接起来的网络
实现资源共享和数据传递
(2)网络编程:用编程语言来实现计算机的资源共享和数据传递
(3)网络通信的三要素
A:IP地址
计算机在网络中的唯一标识
现在使用的是“点分十进制”
B:端口
应用程序的标记
C:协议
通信的规则
UDP:不建立连接,数据打包传输,数据有限制,数据不可靠,速度快
TCP:建立连接,数据无限制,数据可靠,速度慢
(4)UDP发送和接收数据
先开启哪一端都无所谓
A:发送端
步骤:
创建发送端的socket服务对象
创建数据,并把数据打包
发送数据
释放资源
代码体现:
请看JAVA UDP入门
B:接收端
步骤:
创建接收端的socket服务对象
创建数据包
接收数据
解析数据
释放资源
(5)TCP发送和接收数据
必须开启服务器端启
A:客户端
步骤:
创建客户端socket对象
获取输出流
写数据
释放资源
B:服务器端
步骤:
创建服务端对象
获取输入流
读数据
释放资源