计算机网络:地理位置不同的多台具有独立功能的计算机跟通讯设备通过操作系统,通讯协议等实现数据共享,信息传递的计算机系统。
网络编程的目的:实现数据共享与通信
端口:一个程序的进程:
不同的进程有不同的端口号,用来区分软件
单个协议下,端口号不能冲突
公有端口号0~1023
HTTP:80
HTTPS:443
FTP:21
TELENT:23
程序注册端口:1024~49151
Tomcat:8080
MySQL:3306
Oracle:1521
动态私有:49152-65535
netstar-ano//查看所有端口
netstar-ano|findstr"5900"//查看指定端口
takelist|findstr""
通信协议:TCP/IP
TCP:用户传输协议 连接稳定—三次握手—四次挥手—传输完成,连接断开—客户端&服务端
UDP:用户数字报协议 不连接不稳定—客户端服务端界限不明确
IP :网络互联协议
文件上传
服务器端
package lesson01;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServerDemo02 {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9000);//创建服务
Socket socket=serverSocket.accept();//监听客户端连接
InputStream is=socket.getInputStream();
FileOutputStream fos=new FileOutputStream("recever.jpg");//文件输出
byte[] buffer=new byte[1024];
int len;
while ((len=is.read(buffer))!=-1){
fos.write(buffer,0,len);
}
OutputStream os = socket.getOutputStream();
os.write("接收完毕,请关闭连接".getBytes());
os.close();
fos.close();
is.close();
socket.close();
serverSocket.close();
}
}
客户端
package lesson01;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClientDemo02 {
public static void main(String[] args) throws IOException {
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 9000);
OutputStream os = socket.getOutputStream();
FileInputStream fis=new FileInputStream(new File("12.jpg"));
byte[] buffer=new byte[1024];
int len;
while ((len=fis.read(buffer))!=-1){
os.write(buffer,0,len);
}
socket.shutdownOutput();
InputStream inputStream = socket.getInputStream();
ByteArrayOutputStream baos= new ByteArrayOutputStream();
byte[] buffer2=new byte[1024];
int len2;
while ((len2=inputStream.read(buffer))!=-1){
baos.write(buffer,0,len2);
}
System.out.println(baos.toString());
baos.close();
fis.close();
os.close();
socket.close();
}
}