網路編程
查看本機IP地址,在控制臺輸入:ipconfig
檢查網路是否連通,在控制臺輸入:ping 空格 IP地址
localhost代表本機地址
客戶端
Socket:實作客戶端套接字,套接字是兩臺機器間通信的端點
Socket(String host,int port);//String host:IP地址//int port:服務器的埠號
getOutputStream();//回傳此套接字的輸出流
getInputStream ();//回傳此套接字的輸入流
close();//關閉此套接字
shutdownOutput;//禁用此套接字的輸出流
服務器端
ServerSocket:服務器端
ServerSocket(int port);
accept();//監聽并接受到此套接字的連接
客戶端
import java.io.*;
import java.net.Socket;
public class Kehuduan {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("D:\\1.jpg");
Socket socket=new Socket("192.168.10.30",8888);
OutputStream os=socket.getOutputStream();
int len=0;
byte[] bytes=new byte[1024];
while((len=fis.read(bytes))!=-1){
os.write(bytes,0,len);
}
socket.shutdownOutput();
InputStream is = socket.getInputStream();
while((len=is.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
fis.close();
socket.close();
}
}
服務器
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Fuwuqi {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(8888);
Socket s = serverSocket.accept();
InputStream is = s.getInputStream();
File file=new File("D:\\1.jpg");
if(!file.exists()){
file.mkdir();
}
FileOutputStream fos=new FileOutputStream("E:\\"+System.currentTimeMillis());
int len=0;
byte[] bytes=new byte[1024];
while((len=is.read(bytes))!=-1){
fos.write(bytes);
}
OutputStream os = s.getOutputStream();
os.write("上傳成功".getBytes());
fos.close();
serverSocket.close();
}
}
BS是瀏覽器和服務器結構,一般指B/S結構
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Demo04 {//這是模擬服務器
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(8888);
while (true){//讀取圖片,每讀取一次圖片,建立一個新執行緒
Socket socket=serverSocket.accept();
new Thread(new Runnable() {
@Override
public void run() {
try{
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s = br.readLine();
Systenm.out.println(line);//輸出一下請求的路徑
String[] arr=s.split(" ");
String htmlpath=arr[1].substring(1);
FileInputStream fis=new FileInputStream(htmlpath);
OutputStream os=socket.getOutputStream();
//使用HTTP協議回應頭,固定格式
os.write("HTTP/1.1 200 OK\r\n".getBytes());
os.write("Content-Type:text/html\r\n".getBytes());
//必須寫入空行,否則瀏覽器不決議
os.write("\r\n".getBytes()) ;
int len=0;
byte[] bytes=new byte[1024];
while ((len=fis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
fis.close();
os.close();
socket.close();
}catch (IOException e){
System.out.println(e);
}
}
}).start();
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/272469.html
標籤:java
上一篇:java 編程習題 之 猴子偷桃
