黑马程序员——网络编程(二)
2015-11-17 09:00
489 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------
●TCP-上传图片
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public
class TCPClient {
public
static void main(String[] args)
throws Exception {
Socket s = new Socket(InetAddress.getLocalHost(),11000);
OutputStream out = s.getOutputStream();
FileInputStream bis = new FileInputStream("g:/tupian.jpg");
InputStream in = s.getInputStream();
int len = 0;
byte[] buf =
new byte[1024];
while((len=bis.read(buf))!=-1){
out.write(buf,0,len);
out.flush();
}
s.shutdownOutput();
len=in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
bis.close();
}
}
package morning;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public
class TCPServer {
public
static void main(String[] args)
throws IOException {
ServerSocket ss = new ServerSocket(11000);
Socket s = ss.accept();
InetAddress ip = s.getInetAddress();
System.out.println("Client:"+ip+"---connection");
InputStream bis = s.getInputStream();
FileOutputStream fos = new FileOutputStream("g:/TU.jpg");
OutputStream out = s.getOutputStream();
int len = 0;
byte[] buf =
new byte[1024];
while((len=bis.read(buf))!=-1){
fos.write(buf, 0, len);
fos.flush();
}
out.write("上传成功".getBytes());
fos.close();
ss.close();
s.close();
}
}
●TCP-客户端并发上传图片
package morning;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
class PicThread
implements Runnable{
public Socket
s;
public
int cnt = 0;
public PicThread(Socket s) {
super();
this.s = s;
}
public
void run(){
try {
InetAddress ip = s.getInetAddress();
System.out.println("Client:"+ip+"---connection");
InputStream bis= s.getInputStream();
File file = new File("g:/("+(cnt)+")"+".jpg");
while(file.exists())
file=new File("g:/("+(cnt++)+")"+".jpg");
FileOutputStream fos = new FileOutputStream(file);
OutputStream out = s.getOutputStream();
int len = 0;
byte[] buf =
new byte[1024];
while((len=bis.read(buf))!=-1){
fos.write(buf, 0, len);
fos.flush();
}
out.write("上传成功".getBytes());
fos.close();
s.close();
} catch (IOException e) {
throw
new RuntimeException("上传失败!");
}
}
}
public
class TCPServer {
public
static void main(String[] args)
throws IOException {
ServerSocket ss = new ServerSocket(11000);
while(true){
Socket s = ss.accept();
PicThread p = new PicThread(s);
new Thread(p).start();
}
}
}
package morning;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public
class TCPClient {
public
static void main(String[] args)
throws Exception {
Socket s = new Socket(InetAddress.getLocalHost(),11000);
OutputStream out = s.getOutputStream();
FileInputStream bis = new FileInputStream("g:/tupian.jpg");
InputStream in = s.getInputStream();
int len = 0;
byte[] buf =
new byte[1024];
while((len=bis.read(buf))!=-1){
out.write(buf,0,len);
out.flush();
}
s.shutdownOutput();
len=in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
bis.close();
}
}
●TCP-客户端并发登录
package evening;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
class UserThread
implements Runnable {
Socket s;
public UserThread(Socket s) {
super();
this.s = s;
}
@Override
public
void run() {
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"connection");
try {
for (int i = 0; i < 3; i++) {
BufferedReader bufin = new BufferedReader(
new InputStreamReader(s.getInputStream()));
String name = bufin.readLine();
if(name==null){
break;
}
BufferedReader bufr = new BufferedReader(new FileReader(
"g:/user.txt"));
PrintWriter out = new PrintWriter(s.getOutputStream(),
true);
String line = null;
boolean flag =
false;
while ((line = bufr.readLine()) !=
null) {
if (name.equals(line)) {
flag = true;
break;
}
}
if (flag) {
System.out.println(name +
"已登陆");
out.println(name+ "欢迎光临");
break;
}else{
System.out.println(name+"尝试登录");
out.println(name+"不存在");
}
}
s.close();
} catch (IOException e) {
throw
new RuntimeException(ip+"校验失败");
}
}
}
public
class LoginServer {
public
static void main(String[] args)
throws IOException {
ServerSocket ss = new ServerSocket(10010);
while (true) {
Socket s = ss.accept();
new Thread(new UserThread(s)).start();
}
}
}
package evening;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public
class LoginClient {
public
static void main(String[] args)
throws IOException {
Socket s = new Socket("192.168.161.1",10010);
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
for (int i = 0; i < 3; i++) {
String line = bufr.readLine();
if(line==null)
break;
out.println(line);
String info = bufin.readLine();
System.out.println(info);
if(info.contains("欢迎"))
break;
}
bufr.close();
s.close();
}
}
●用浏览器访问服务器(请求消息头/应答消息头)
请求消息头 和请求消息体 中间加空行
GET / HTTP/1.1
Host: 192.168.161.1:10020
User-Agent: Mozilla/5.0(Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
●应用层
URL
String getFile()
获取此 URL 的文件名。
String getHost()
获取此 URL 的主机名(如果适用)。
String getPath()
获取此 URL 的路径部分。
intgetPort()
获取此 URL 的端口号。
String getProtocol()
获取此 URL 的协议名称。
String getQuery()
获取此 URL 的查询部分。
openStream()
URLConnection
●小知识
Socket(InetAddress address, int port)
void connect(SocketAddress endpoint)
InetSocketAddress 此类实现 IP 套接字地址(IP 地址 + 端口号)。
ServerSocket(int port, int backlog) backlog - 队列的最大长度。
●域名解析
想要将主机名翻译成ip地址,需要域名解析。DNS
http://127.0.0.1:8080
http://localhost:8080
其实127和localhost的映射关系就在本机上
c:、windows\systems\drivers\ect\host
127.0.0.1 myeclipse.com
避免升级
127.0.0.1 恶意网站
避免中毒
-------
●TCP-上传图片
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public
class TCPClient {
public
static void main(String[] args)
throws Exception {
Socket s = new Socket(InetAddress.getLocalHost(),11000);
OutputStream out = s.getOutputStream();
FileInputStream bis = new FileInputStream("g:/tupian.jpg");
InputStream in = s.getInputStream();
int len = 0;
byte[] buf =
new byte[1024];
while((len=bis.read(buf))!=-1){
out.write(buf,0,len);
out.flush();
}
s.shutdownOutput();
len=in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
bis.close();
}
}
package morning;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public
class TCPServer {
public
static void main(String[] args)
throws IOException {
ServerSocket ss = new ServerSocket(11000);
Socket s = ss.accept();
InetAddress ip = s.getInetAddress();
System.out.println("Client:"+ip+"---connection");
InputStream bis = s.getInputStream();
FileOutputStream fos = new FileOutputStream("g:/TU.jpg");
OutputStream out = s.getOutputStream();
int len = 0;
byte[] buf =
new byte[1024];
while((len=bis.read(buf))!=-1){
fos.write(buf, 0, len);
fos.flush();
}
out.write("上传成功".getBytes());
fos.close();
ss.close();
s.close();
}
}
●TCP-客户端并发上传图片
package morning;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
class PicThread
implements Runnable{
public Socket
s;
public
int cnt = 0;
public PicThread(Socket s) {
super();
this.s = s;
}
public
void run(){
try {
InetAddress ip = s.getInetAddress();
System.out.println("Client:"+ip+"---connection");
InputStream bis= s.getInputStream();
File file = new File("g:/("+(cnt)+")"+".jpg");
while(file.exists())
file=new File("g:/("+(cnt++)+")"+".jpg");
FileOutputStream fos = new FileOutputStream(file);
OutputStream out = s.getOutputStream();
int len = 0;
byte[] buf =
new byte[1024];
while((len=bis.read(buf))!=-1){
fos.write(buf, 0, len);
fos.flush();
}
out.write("上传成功".getBytes());
fos.close();
s.close();
} catch (IOException e) {
throw
new RuntimeException("上传失败!");
}
}
}
public
class TCPServer {
public
static void main(String[] args)
throws IOException {
ServerSocket ss = new ServerSocket(11000);
while(true){
Socket s = ss.accept();
PicThread p = new PicThread(s);
new Thread(p).start();
}
}
}
package morning;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public
class TCPClient {
public
static void main(String[] args)
throws Exception {
Socket s = new Socket(InetAddress.getLocalHost(),11000);
OutputStream out = s.getOutputStream();
FileInputStream bis = new FileInputStream("g:/tupian.jpg");
InputStream in = s.getInputStream();
int len = 0;
byte[] buf =
new byte[1024];
while((len=bis.read(buf))!=-1){
out.write(buf,0,len);
out.flush();
}
s.shutdownOutput();
len=in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
bis.close();
}
}
●TCP-客户端并发登录
package evening;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
class UserThread
implements Runnable {
Socket s;
public UserThread(Socket s) {
super();
this.s = s;
}
@Override
public
void run() {
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"connection");
try {
for (int i = 0; i < 3; i++) {
BufferedReader bufin = new BufferedReader(
new InputStreamReader(s.getInputStream()));
String name = bufin.readLine();
if(name==null){
break;
}
BufferedReader bufr = new BufferedReader(new FileReader(
"g:/user.txt"));
PrintWriter out = new PrintWriter(s.getOutputStream(),
true);
String line = null;
boolean flag =
false;
while ((line = bufr.readLine()) !=
null) {
if (name.equals(line)) {
flag = true;
break;
}
}
if (flag) {
System.out.println(name +
"已登陆");
out.println(name+ "欢迎光临");
break;
}else{
System.out.println(name+"尝试登录");
out.println(name+"不存在");
}
}
s.close();
} catch (IOException e) {
throw
new RuntimeException(ip+"校验失败");
}
}
}
public
class LoginServer {
public
static void main(String[] args)
throws IOException {
ServerSocket ss = new ServerSocket(10010);
while (true) {
Socket s = ss.accept();
new Thread(new UserThread(s)).start();
}
}
}
package evening;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public
class LoginClient {
public
static void main(String[] args)
throws IOException {
Socket s = new Socket("192.168.161.1",10010);
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
for (int i = 0; i < 3; i++) {
String line = bufr.readLine();
if(line==null)
break;
out.println(line);
String info = bufin.readLine();
System.out.println(info);
if(info.contains("欢迎"))
break;
}
bufr.close();
s.close();
}
}
●用浏览器访问服务器(请求消息头/应答消息头)
请求消息头 和请求消息体 中间加空行
GET / HTTP/1.1
Host: 192.168.161.1:10020
User-Agent: Mozilla/5.0(Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
●应用层
URL
String getFile()
获取此 URL 的文件名。
String getHost()
获取此 URL 的主机名(如果适用)。
String getPath()
获取此 URL 的路径部分。
intgetPort()
获取此 URL 的端口号。
String getProtocol()
获取此 URL 的协议名称。
String getQuery()
获取此 URL 的查询部分。
openStream()
URLConnection
●小知识
Socket(InetAddress address, int port)
void connect(SocketAddress endpoint)
InetSocketAddress 此类实现 IP 套接字地址(IP 地址 + 端口号)。
ServerSocket(int port, int backlog) backlog - 队列的最大长度。
●域名解析
想要将主机名翻译成ip地址,需要域名解析。DNS
http://127.0.0.1:8080
http://localhost:8080
其实127和localhost的映射关系就在本机上
c:、windows\systems\drivers\ect\host
127.0.0.1 myeclipse.com
避免升级
127.0.0.1 恶意网站
避免中毒
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统