黑马程序员-网络编程TCP练习(服务端)
2014-03-16 16:35
507 查看
------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! -------
package it.heima.mylog;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPTest2 {
public static void main(String[] args) throws Exception {
//关键词:TCP协议上传媒体文件,Hyper Text Transport Protocol(http超文本传输协议),Hypertext Markup Language(HTML超文本标记语言)
// 要求:TCP协议客户端上传图片到服务端
/*TCP服务端接收文本*/
//TCPUploadServer();
//server端
TCPServer();
}
public static void TCPUploadServer() throws IOException {
// 服务端
System.out.println("开启服务端......");
// 创建一个Socket服务端点,服务端用ServerSocket。
ServerSocket ss = new ServerSocket(10005);
// 获取客户端的socket对象
Socket s = ss.accept();
// 为了世界和平,可以记录客户端的主机IP
System.out.println(s.getInetAddress().getHostAddress() + "......连接了我");
// 从socket对象得到读取流,用了读取客户端发来的数据
// Buffered装饰读取流,InputStreamReader将字节流转成字符流,纯文本嘛,方便操作。为什么要转呢?因为从socket获取的都是字节流。简单到不行。
BufferedReader bufrIn = new BufferedReader(new InputStreamReader(
s.getInputStream()));
// 注意,这个流是在服务端创建的一个写入流,和客户端无关。也就是和socket流无关。只在服务端操作的流。
// 输出流,关联一个数据输出目的地c:\\
BufferedWriter bufw = new BufferedWriter(new FileWriter(
"d:\\server.txt"));
// 定义一个字符串缓冲区,用了存储读取的数据
String line = null;
// 疯狂的读取和写入
while ((line = bufrIn.readLine()) != null) {
// 开写
bufw.write(line);
// 写完一行换行
bufw.newLine();
// 记得要刷新
bufw.flush();
}
// 数据上传完要告诉客户端一声,就又要从socket对象中获取输出流。PrintWiter装饰输出流。true自动刷新
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
// 输出信息
out.println("上传成功.............");
// 关闭流
bufw.close();
// 关闭服务端。
s.close();
ss.close();
// 真的搞出来了了
// ============================================================
}
public static void TCPServer() throws Exception {
// 创建tcp的socket服务端
ServerSocket ss = new ServerSocket(10086);
// 获取socket对象
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
// 获取socket读取流读取客户端发来的数据
InputStream in = s.getInputStream();
// 将读到的数据存储到一个文件中
File dir = new File("d:\\ServJPG");
if (!dir.exists())
dir.mkdirs();
File file = new File(dir, ip + ".jpg");
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) != -1) {
fos.write(buf, 0, len);
}
// 获取socket输出流,蒋成功信息发送给客户端
OutputStream out = s.getOutputStream();
out.write("上传成功".getBytes());
fos.close();
ss.close();
}
}
------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! -------
4000
package it.heima.mylog;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPTest2 {
public static void main(String[] args) throws Exception {
//关键词:TCP协议上传媒体文件,Hyper Text Transport Protocol(http超文本传输协议),Hypertext Markup Language(HTML超文本标记语言)
// 要求:TCP协议客户端上传图片到服务端
/*TCP服务端接收文本*/
//TCPUploadServer();
//server端
TCPServer();
}
public static void TCPUploadServer() throws IOException {
// 服务端
System.out.println("开启服务端......");
// 创建一个Socket服务端点,服务端用ServerSocket。
ServerSocket ss = new ServerSocket(10005);
// 获取客户端的socket对象
Socket s = ss.accept();
// 为了世界和平,可以记录客户端的主机IP
System.out.println(s.getInetAddress().getHostAddress() + "......连接了我");
// 从socket对象得到读取流,用了读取客户端发来的数据
// Buffered装饰读取流,InputStreamReader将字节流转成字符流,纯文本嘛,方便操作。为什么要转呢?因为从socket获取的都是字节流。简单到不行。
BufferedReader bufrIn = new BufferedReader(new InputStreamReader(
s.getInputStream()));
// 注意,这个流是在服务端创建的一个写入流,和客户端无关。也就是和socket流无关。只在服务端操作的流。
// 输出流,关联一个数据输出目的地c:\\
BufferedWriter bufw = new BufferedWriter(new FileWriter(
"d:\\server.txt"));
// 定义一个字符串缓冲区,用了存储读取的数据
String line = null;
// 疯狂的读取和写入
while ((line = bufrIn.readLine()) != null) {
// 开写
bufw.write(line);
// 写完一行换行
bufw.newLine();
// 记得要刷新
bufw.flush();
}
// 数据上传完要告诉客户端一声,就又要从socket对象中获取输出流。PrintWiter装饰输出流。true自动刷新
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
// 输出信息
out.println("上传成功.............");
// 关闭流
bufw.close();
// 关闭服务端。
s.close();
ss.close();
// 真的搞出来了了
// ============================================================
}
public static void TCPServer() throws Exception {
// 创建tcp的socket服务端
ServerSocket ss = new ServerSocket(10086);
// 获取socket对象
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
// 获取socket读取流读取客户端发来的数据
InputStream in = s.getInputStream();
// 将读到的数据存储到一个文件中
File dir = new File("d:\\ServJPG");
if (!dir.exists())
dir.mkdirs();
File file = new File(dir, ip + ".jpg");
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) != -1) {
fos.write(buf, 0, len);
}
// 获取socket输出流,蒋成功信息发送给客户端
OutputStream out = s.getOutputStream();
out.write("上传成功".getBytes());
fos.close();
ss.close();
}
}
------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! -------
4000
相关文章推荐
- 黑马程序员--10.网络编程--06.【Clinet_Server通信原理】【TCP_客户端和服务端会话】【阻塞式方法的详解】
- 黑马程序员-----网络编程中Tcp练习
- JavaSE_网络编程_TCP_练习4_与浏览器和服务端交互
- 黑马程序员-网络编程TCP练习(客户端)
- 黑马程序员_网络编程2(Tcp练习,URL-URLConnection,网络知识,域名解析)
- 黑马程序员_网络编程二(Tcp练习,URL-URLConnection,网络知识,域名解析)
- 黑马程序员--网络编程之TCP
- 黑马程序员-->08_TCP、UDP网络编程
- 黑马程序员-网络编程 tcp传输 URL
- 黑马程序员---网络编程(TCP传输 二)
- 27-网络编程-19-网络编程(TCP协议-练习-服务端多线程技术)
- java网络编程TCP传输—流操作—服务端反馈与客户端接收
- 黑马程序员-网络编程之TCP传输小总结
- Java基础-网络编程(TCP练习)
- 网络版shell之网络编程练习篇--telnet服务端
- Java基础知识网络编程(TCP练习)
- 网络编程序列2——C#TCP服务端代码实现一
- 黑马程序员——java网络编程中的传输协议:UDP和TCP
- 黑马程序员--10.网络编程--05.【TCP协议相关类】【InetSocketAddress类】【Socket类】【ServerSocket类】【TCP客户端和服务器端】
- 黑马程序员_Java基础_网络编程_客户端服务端数据传输,交互,客户端请求服务原理,自定义浏览器,URL统一资源定位符