网络编程
第一章 网络编程入门
1.1软件结构
1.1.1 C/S结构:全程为Client/Server结构,是指客户端和服务器结构。
1.1.2 B/S结构:全称为Browser/Server结构,是指浏览器和服务器结构。
1.2网络通信协议
TCP/IP协议:传输控制协议/因特?互联协议( Transmission Control Protocol/Internet Protocol)
1.3协议分类
1、UDP:?户数据报协议(User Datagram Protocol)。UDP是?连接通信协议,即在数据传输时,数 据的发送端和接收端不建?逻辑连接。
2、TCP:传输控制协议 (Transmission Control Protocol)。TCP协议是?向连接的通信协议,即传输 数据之前,在发送端和接收端建?逻辑连接,然后再传输数据,它提供了两台计算机之间可靠?差 错的数据传输(三次握手
1.4网络编程三要素
1.协议:计算机?络通信必须遵守的规则
2.Ip地址:指互联?协议地址(Internet Protocol Address),俗称IP。
3.端?号:?两个字节表示的整数,它的取值范围是0~65535。(端口取值建议取值>1023)
第二章TCP通信程序

2.1Socket类:客户端
2.1.1构造方法
public Socket(String host, int port) :连接服务器
构造举例,代码如下:
Socket client = new Socket("127.0.0.1", 6666)
2.1.2成员方法
1.public InputStream getInputStream() : 获取网络输入流,读数据
2.public OutputStream getOutputStream() :获取网络输出流,写数据
3.public void close() :关闭客户端
4.public void shutdownOutput() :终止输出流
2.2ServerSocket类:服务端
2.2.1构造方法
public ServerSocket(int port) :初始化ServerSocket服务器
构造举例,代码如下:
ServerSocket server = new ServerSocket(6666);
2.2.2成员方法
public Socket accept() :侦听并接受连接,返回?个新的Socket对象,?于和客户端实现通
信。该?法会?直阻塞直到建?连接。
第三章综合案例
3.1文件上传案例
3.1.1文件上传分析图解
1.【客户端】文件输入流:从硬盘读取文件数据到客户端中。
2.【客户端】网络输出流:把从硬盘读取到的文件数据通过网络输出流写到服务端
3.【服务端】网络输入流:读取从客户端传输过来的文件数据到服务端
4.【服务端】文件输出流:服务端读取到的文件数据写到服务器硬盘中

3.1.2代码实现
服务端实现:
package com.soft.demo06;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class FileUpload_Server {
public static void main(String[] args) throws IOException {
System.out.println("服务器 启动...");
ServerSocket serverSocket = new ServerSocket(6666);
while (true) {
Socket accept = serverSocket.accept();
new Thread(new Runnable() {
@Override
public void run() {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(accept.getInputStream());
bos = new BufferedOutputStream(new FileOutputStream(System.currentTimeMillis()+".jpg"));
byte[] buffer = new byte[1024 * 8];
int len;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
bos.flush();
}
OutputStream outputStream = accept.getOutputStream();
outputStream.write(("相思不过一场戏\n" +
"梦 夜微凉 思一场\n" +
"无人在意心中想").getBytes());
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bos != null) {
bos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (bis != null) {
bis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (accept != null) {
accept.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
System.out.println("文件上传已保存");
}
}
}
客户端实现
package com.soft.demo06;
import java.io.*;
import java.net.Socket;
public class FileUploadClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 6666);
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("l1.jpg"));
byte[] buffer = new byte[1024 * 8];
int len;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
bos.flush();
}
socket.shutdownOutput();
System.out.println("文件发送完毕");
InputStream inputStream = socket.getInputStream();
byte[] buffer2 = new byte[1024];
int len2 = inputStream.read(buffer2);
String content = new String(buffer2, 0, len2);
System.out.println(content);
inputStream.close();
bis.close();
bos.close();
socket.close();
}
}
|