标签:
package net.tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCP_Client {
public static void main(String[] args) throws UnknownHostException, IOException {
/*
* TCP客户端
*/
System.out.println( "TCP客户端");
InetAddress ip = InetAddress.getLocalHost();
// 1. 建立TCP的客户端socket,明确服务端的地址和端口。
Socket s = new Socket( ip, 10003);
// 2. 如果通道建立成功,则自动生成Socket IO流。
// 客户端需要获取socket流的中输出流将数据发送到服务端
OutputStream out = s.getOutputStream();
// 3. 通过socket输出流将数据发送。
out.write("hello tcp".getBytes());
// 4. 关闭资源。
s.close();
}
}
package net.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCP_Server {
public static void main(String[] args) throws IOException {
/*
* TCP服务器端
*/
System.out.println( "TCP服务器端" );
// 1. 创建服务端的socket,监听一个端口。
ServerSocket ss = new ServerSocket(10003);
while ( true) {
// 2. 服务端只要获取到连接过来的客户端套接字就可以和指定的客户端通信了
Socket s = ss.accept(); // 阻塞,监听链接
String ip = s.getRemoteSocketAddress().toString();
System.out.println( ip + " is connected!");
// 3. 通过获取的套接字,读取IO流中客户端发来的数据
InputStream in = s.getInputStream();
// 4. 获取数据并显示
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String( buf, 0, len);
if ("close".equals( text)) {
s.close();
break;
}
System.out.println( text);
// 5. 关闭资源。
s.close();
}
ss.close();
}
}
package net.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;
public class WebBrowserByURL {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
/*
* 模拟一个浏览器
*/
URL url = new URL("https://www.google.com.hk:443/search?hl=zh-CN&q=URL" );
System.out.println( "getProtocol: " + url.getProtocol());
System.out.println( "getHost: " + url .getHost());
System.out.println( "getPort: " + url .getPort());
System.out.println( "getPath: " + url .getPath());
System.out.println( "getFile: " + url .getFile());
System.out.println( "getQuery: " + url .getQuery());
// 获取指定资源连接对象,其中封装了Socket
URLConnection uc = url.openConnection();
BufferedReader br = new BufferedReader( new InputStreamReader(uc.getInputStream(), "utf-8" ));
String str = null;
while (( str = br.readLine()) != null) {
System.out.println( str);
}
}
}
package net.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.Socket;
public class Test_UpperCaseByTCP_Client {
public static void main(String[] args) throws IOException {
System.out.println( "客户端启动..." );
// 确定服务器地址
InetAddress ip = InetAddress.getLocalHost();
// 2. 创建套接字
Socket s = new Socket( ip, 10001);
/*
* 3. 发送:
* 源:键盘录入
* 目的:Socket流,类型:OutputStream
*/
BufferedReader brSend = new BufferedReader( new InputStreamReader(System.in ));
// BufferedWriter bwSend = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
// 输出流可使用PrintStream,可以自动添加换行和自动刷新,更加方便
PrintStream psSend = new PrintStream(s.getOutputStream(), true);
/*
* 4. 接收: 源:Socket流 目的:屏幕显示
*/
BufferedReader brRece = new BufferedReader( new InputStreamReader(s.getInputStream()));
// 5. 发送,并显示响应数据
String str = null;
while (( str = brSend.readLine()) != null) {
// bwSend.write(str);
// bwSend.newLine();
// bwSend.flush();
psSend.println( str);
if ("exit".equals( str) || "close".equals(str )) {
break;
}
str = brRece.readLine();
System.out.println( str);
}
// 6. 关闭资源
s.close();
}
}
package net.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Test_UpperCaseByTCP_Server {
public static void main(String[] args) throws IOException {
System.out.println( "服务端启动..." );
// 1. 创建套接字
ServerSocket ss = new ServerSocket(10001);
while ( true) {
// 2. 获取客户端套接字
Socket s = ss.accept();
System.out.println(s .getInetAddress().getHostAddress() + "已连接!" );
// 3. 明确接收和发送的Socket流
BufferedReader br = new BufferedReader( new InputStreamReader(s.getInputStream()));
// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
// 输出流可使用PrintStream,可以自动添加换行和自动刷新,更加方便
PrintStream ps = new PrintStream(s.getOutputStream(), true);
// 4. 获取数据并做大写转换
String str = null;
while (( str = br.readLine()) != null) {
if ( "exit".equals(str )) {
break;
} else if ( "close".equals(str )) {
System.out.println(s .getInetAddress().getHostAddress() + ":" + s .getPort()
+ " 请求关闭服务端..." );
s.close();
ss.close();
System. out.println("服务端已关闭!" );
return;
}
System. out.println("数据:" + str );
// 5. 将转换好的数据发送回客户端
// bw.write(str.toUpperCase());
// bw.newLine();
// bw.flush();
ps.println( str.toUpperCase());
}
// 6. 关闭客户端
s.close();
}
}
}
package net.tcp;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class Test_UploadByTCP_Client {
private static final int BUFFER_SIZE = 8192;
public static void main(String[] args) throws IOException {
System.out.println( "上传客户端启动..." );
// 1. 获取服务器地址和端口
InetAddress ip = InetAddress.getLocalHost();
// 2. 创建套接字连接服务器
Socket s = new Socket( ip, 10002);
/*
* 3. 发送:
* 源:文件
* 目的:Socket流,类型:OutputStream
*/
File file = new File( "temp\\byte.ape");
FileInputStream fis = new FileInputStream( file);
OutputStream os = s.getOutputStream();
// 4. 循环发送
byte[] buf = new byte[ BUFFER_SIZE];
int len = 0;
while (( len = fis.read( buf)) != -1) {
os.write(buf, 0, len);
}
fis.close();
// 5. 发送结束标志
s.shutdownOutput();
// 6. 读取服务器反馈信息
BufferedReader br = new BufferedReader( new InputStreamReader(s.getInputStream()));
System.out.println( br.readLine());
// 7. 关闭资源
s.close();
}
}
package net.tcp;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test_UploadByTCP implements Runnable {
private static final int BUFFER_SIZE = 8192;
private Socket s;
public Test_UploadByTCP(Socket s) {
super();
this.s = s;
}
@Override
public void run() {
/*
* 1. 接收: 源:Socket流
* 目的:文件
*/
File path = new File( "temp\\" + s.getInetAddress().getHostAddress());
if (!path.exists()) {
path.mkdirs();
}
// 对上传文件按上传时间命名,并避免与已有文件名重复
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd-HHmmss-" );
String preName = sdf.format(date);
int count = 0;
File file = new File( path, preName + count + ".ape");
while ( file.exists()) {
count++;
file = new File( path, preName + count + ".ape");
}
try {
InputStream is = s.getInputStream();
FileOutputStream fos = new FileOutputStream( file);
// 2. 循环接收
byte[] buf = new byte[ BUFFER_SIZE];
int len = 0;
while (( len = is.read( buf)) != -1) {
fos.write( buf, 0, len);
}
fos.close();
String msg = "上传成功!";
// 4. 发送反馈信息
OutputStream os = s.getOutputStream();
os.write(msg.getBytes());
// 5. 关闭资源
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package net.tcp;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Test_UploadByTCP_Server {
public static void main(String[] args) throws IOException {
System.out.println( "上传服务端启动..." );
// 1. 创建套接字
ServerSocket ss = new ServerSocket(10002);
while ( true) {
// 2. 获取客户端套接字
Socket s = ss.accept();
// 3. 创建线程完成文件上传
new Thread( new Test_UploadByTCP( s)).start();
}
}
}
package net.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class WebBrowser {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
/*
* 模拟一个浏览器
*/
InetAddress ip = InetAddress.getByName("www.itheima.com");
System.out.println( ip.getHostAddress());
Socket s = new Socket( ip, 80);
// 浏览器请求信息发送给服务端
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println("GET / HTTP/1.1");
out.println("Accept: */*");
out.println("Host: www.itheima.com:80");
out.println("Connection: close");
out.println(); // 空行。
// 读取服务端的数据。
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String( buf, 0, len, "utf-8");
System.out.println( text);
s.close();
}
}
package net.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class WebServer {
public static void main(String[] args) throws IOException {
/*
* 自定义Web服务端 获取浏览器的信息,并反馈 Html信息。
*/
System.out.println( "自定义Web服务器启动..." );
ServerSocket ss = new ServerSocket(9090);
Socket s = ss.accept();
System.out.println(s .getInetAddress().getHostAddress() + " is connected.");
// 读取客户端的数据。
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String( buf, 0, len);
System.out.println( text);
// 给客户端回馈数据。
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println("<font color=‘red‘ size=‘7‘>欢迎光临</font>" );
s.close();
ss.close();
}
}
package net.tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCP_Client {
public static void main(String[] args) throws UnknownHostException, IOException {
/*
* TCP客户端
*/
System.out.println( "TCP客户端");
InetAddress ip = InetAddress.getLocalHost();
// 1. 建立TCP的客户端socket,明确服务端的地址和端口。
Socket s = new Socket( ip, 10003);
// 2. 如果通道建立成功,则自动生成Socket IO流。
// 客户端需要获取socket流的中输出流将数据发送到服务端
OutputStream out = s.getOutputStream();
// 3. 通过socket输出流将数据发送。
out.write("hello tcp".getBytes());
// 4. 关闭资源。
s.close();
}
}
package net.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCP_Server {
public static void main(String[] args) throws IOException {
/*
* TCP服务器端
*/
System.out.println( "TCP服务器端" );
// 1. 创建服务端的socket,监听一个端口。
ServerSocket ss = new ServerSocket(10003);
while ( true) {
// 2. 服务端只要获取到连接过来的客户端套接字就可以和指定的客户端通信了
Socket s = ss.accept(); // 阻塞,监听链接
String ip = s.getRemoteSocketAddress().toString();
System.out.println( ip + " is connected!");
// 3. 通过获取的套接字,读取IO流中客户端发来的数据
InputStream in = s.getInputStream();
// 4. 获取数据并显示
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String( buf, 0, len);
if ("close".equals( text)) {
s.close();
break;
}
System.out.println( text);
// 5. 关闭资源。
s.close();
}
ss.close();
}
}
package net.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;
public class WebBrowserByURL {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
/*
* 模拟一个浏览器
*/
URL url = new URL("https://www.google.com.hk:443/search?hl=zh-CN&q=URL" );
System.out.println( "getProtocol: " + url.getProtocol());
System.out.println( "getHost: " + url .getHost());
System.out.println( "getPort: " + url .getPort());
System.out.println( "getPath: " + url .getPath());
System.out.println( "getFile: " + url .getFile());
System.out.println( "getQuery: " + url .getQuery());
// 获取指定资源连接对象,其中封装了Socket
URLConnection uc = url.openConnection();
BufferedReader br = new BufferedReader( new InputStreamReader(uc.getInputStream(), "utf-8" ));
String str = null;
while (( str = br.readLine()) != null) {
System.out.println( str);
}
}
}
package net.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.Socket;
public class Test_UpperCaseByTCP_Client {
public static void main(String[] args) throws IOException {
System.out.println( "客户端启动..." );
// 确定服务器地址
InetAddress ip = InetAddress.getLocalHost();
// 2. 创建套接字
Socket s = new Socket( ip, 10001);
/*
* 3. 发送:
* 源:键盘录入
* 目的:Socket流,类型:OutputStream
*/
BufferedReader brSend = new BufferedReader( new InputStreamReader(System.in ));
// BufferedWriter bwSend = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
// 输出流可使用PrintStream,可以自动添加换行和自动刷新,更加方便
PrintStream psSend = new PrintStream(s.getOutputStream(), true);
/*
* 4. 接收: 源:Socket流 目的:屏幕显示
*/
BufferedReader brRece = new BufferedReader( new InputStreamReader(s.getInputStream()));
// 5. 发送,并显示响应数据
String str = null;
while (( str = brSend.readLine()) != null) {
// bwSend.write(str);
// bwSend.newLine();
// bwSend.flush();
psSend.println( str);
if ("exit".equals( str) || "close".equals(str )) {
break;
}
str = brRece.readLine();
System.out.println( str);
}
// 6. 关闭资源
s.close();
}
}
package net.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Test_UpperCaseByTCP_Server {
public static void main(String[] args) throws IOException {
System.out.println( "服务端启动..." );
// 1. 创建套接字
ServerSocket ss = new ServerSocket(10001);
while ( true) {
// 2. 获取客户端套接字
Socket s = ss.accept();
System.out.println(s .getInetAddress().getHostAddress() + "已连接!" );
// 3. 明确接收和发送的Socket流
BufferedReader br = new BufferedReader( new InputStreamReader(s.getInputStream()));
// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
// 输出流可使用PrintStream,可以自动添加换行和自动刷新,更加方便
PrintStream ps = new PrintStream(s.getOutputStream(), true);
// 4. 获取数据并做大写转换
String str = null;
while (( str = br.readLine()) != null) {
if ( "exit".equals(str )) {
break;
} else if ( "close".equals(str )) {
System.out.println(s .getInetAddress().getHostAddress() + ":" + s .getPort()
+ " 请求关闭服务端..." );
s.close();
ss.close();
System. out.println("服务端已关闭!" );
return;
}
System. out.println("数据:" + str );
// 5. 将转换好的数据发送回客户端
// bw.write(str.toUpperCase());
// bw.newLine();
// bw.flush();
ps.println( str.toUpperCase());
}
// 6. 关闭客户端
s.close();
}
}
}
package net.tcp;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class Test_UploadByTCP_Client {
private static final int BUFFER_SIZE = 8192;
public static void main(String[] args) throws IOException {
System.out.println( "上传客户端启动..." );
// 1. 获取服务器地址和端口
InetAddress ip = InetAddress.getLocalHost();
// 2. 创建套接字连接服务器
Socket s = new Socket( ip, 10002);
/*
* 3. 发送:
* 源:文件
* 目的:Socket流,类型:OutputStream
*/
File file = new File( "temp\\byte.ape");
FileInputStream fis = new FileInputStream( file);
OutputStream os = s.getOutputStream();
// 4. 循环发送
byte[] buf = new byte[ BUFFER_SIZE];
int len = 0;
while (( len = fis.read( buf)) != -1) {
os.write(buf, 0, len);
}
fis.close();
// 5. 发送结束标志
s.shutdownOutput();
// 6. 读取服务器反馈信息
BufferedReader br = new BufferedReader( new InputStreamReader(s.getInputStream()));
System.out.println( br.readLine());
// 7. 关闭资源
s.close();
}
}
package net.tcp;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test_UploadByTCP implements Runnable {
private static final int BUFFER_SIZE = 8192;
private Socket s;
public Test_UploadByTCP(Socket s) {
super();
this.s = s;
}
@Override
public void run() {
/*
* 1. 接收: 源:Socket流
* 目的:文件
*/
File path = new File( "temp\\" + s.getInetAddress().getHostAddress());
if (!path.exists()) {
path.mkdirs();
}
// 对上传文件按上传时间命名,并避免与已有文件名重复
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd-HHmmss-" );
String preName = sdf.format(date);
int count = 0;
File file = new File( path, preName + count + ".ape");
while ( file.exists()) {
count++;
file = new File( path, preName + count + ".ape");
}
try {
InputStream is = s.getInputStream();
FileOutputStream fos = new FileOutputStream( file);
// 2. 循环接收
byte[] buf = new byte[ BUFFER_SIZE];
int len = 0;
while (( len = is.read( buf)) != -1) {
fos.write( buf, 0, len);
}
fos.close();
String msg = "上传成功!";
// 4. 发送反馈信息
OutputStream os = s.getOutputStream();
os.write(msg.getBytes());
// 5. 关闭资源
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package net.tcp;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Test_UploadByTCP_Server {
public static void main(String[] args) throws IOException {
System.out.println( "上传服务端启动..." );
// 1. 创建套接字
ServerSocket ss = new ServerSocket(10002);
while ( true) {
// 2. 获取客户端套接字
Socket s = ss.accept();
// 3. 创建线程完成文件上传
new Thread( new Test_UploadByTCP( s)).start();
}
}
}
package net.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class WebBrowser {
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
/*
* 模拟一个浏览器
*/
InetAddress ip = InetAddress.getByName("www.itheima.com");
System.out.println( ip.getHostAddress());
Socket s = new Socket( ip, 80);
// 浏览器请求信息发送给服务端
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println("GET / HTTP/1.1");
out.println("Accept: */*");
out.println("Host: www.itheima.com:80");
out.println("Connection: close");
out.println(); // 空行。
// 读取服务端的数据。
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String( buf, 0, len, "utf-8");
System.out.println( text);
s.close();
}
}
package net.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class WebServer {
public static void main(String[] args) throws IOException {
/*
* 自定义Web服务端 获取浏览器的信息,并反馈 Html信息。
*/
System.out.println( "自定义Web服务器启动..." );
ServerSocket ss = new ServerSocket(9090);
Socket s = ss.accept();
System.out.println(s .getInetAddress().getHostAddress() + " is connected.");
// 读取客户端的数据。
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
String text = new String( buf, 0, len);
System.out.println( text);
// 给客户端回馈数据。
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println("<font color=‘red‘ size=‘7‘>欢迎光临</font>" );
s.close();
ss.close();
}
}
标签:
原文地址:http://blog.csdn.net/u010388781/article/details/51167762