package com.dasenlin.socket;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(8888);
System.out.println("服务器启动中");
while(true){
java.net.Socket socket =server.accept();
DataOutputStream output = new DataOutputStream(socket.getOutputStream());
output.writeUTF("Ip:"+socket.getInetAddress());
output.writeUTF("Port:"+socket.getPort());
//output.flush();
output.close();
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.dasenlin.socket;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Scanner scan = new Scanner(System.in);
System.out.println("请输入服务器地址:");
String ip = scan.nextLine();
System.out.println("请输入服务器端口:");
int port=scan.nextInt();
Socket socket=null;
DataInputStream inputs=null;
try {
socket = new Socket(ip,port);
inputs = new DataInputStream(socket.getInputStream());
while(true){//链接上了,一直被阻塞着
System.out.println("client:"+inputs.readUTF());
}
} catch (IOException e) {
e.printStackTrace();
}finally{
inputs.close();
socket.close();
}
}
}
package com.dasenlin.socket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HardServer {
public static void main(String[] args) {
ServerSocket server =null;
Socket socket =null;
try {
server = new ServerSocket(8888);
System.out.println("服务器运行中....");
while(true){
socket = server.accept();
Thread t = new Thread(new ServerRunner(socket));
t.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerRunner implements Runnable{
private Socket socket;
public ServerRunner(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
DataInputStream input = new DataInputStream(socket.getInputStream());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true){
String command =input.readUTF();
String[] array = command.split(":");
StringBuilder builder = new StringBuilder();
if("GET".equals(array[0])){
File file =new File(array[1]);
BufferedReader reader = new BufferedReader(new FileReader(file));
String fileContent=null;
while((fileContent=reader.readLine())!=null){
builder.append(fileContent);
builder.append("\n");
}
}else if("TIME".equals(array[0])){
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
builder.append(sf.format(new Date()));
builder.append("\n");
}else{
builder.append("未知指令");
builder.append("\n");
}
builder.append("EOF\n");
writer.write(builder.toString());
writer.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.dasenlin.socket;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.Scanner;
public class HardClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1",8888);
System.out.println("已经链接上服务器,请向服务器输入指令:");
Thread t = new Thread(new ClientRunner(socket));
t.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ClientRunner implements Runnable{
private Socket socket;
public ClientRunner(Socket socket){
this.socket=socket;
}
@Override
public void run() {
Scanner scan = new Scanner(System.in);
try {
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
DataOutputStream output = new DataOutputStream(socket.getOutputStream());
while(true){
System.out.println("请输入你的请求");
String command = scan.nextLine();
output.writeUTF(command);
while(true){
String response = input.readLine();
if("EOF".equals(response)){
break;
}
System.out.println(response);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.dasenlin.socket;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class FileServer {
public static void main(String[] args) {
ServerSocket server =null;
try {
server = new ServerSocket(8888);
System.out.println("server start...");
Thread t = new Thread(new SerRunner(server));
t.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class SerRunner implements Runnable{
private ServerSocket server;
public SerRunner(ServerSocket server) {
this.server=server;
}
@Override
public void run() {
Socket socket=null;
BufferedOutputStream output=null;
try {
socket = server.accept();
File file =new File(socket.getPort()+".txt");
output = new BufferedOutputStream(new FileOutputStream(file));
byte[] bytes = new byte[1024];
while(true){
int i=socket.getInputStream().read(bytes);
if(i==-1)break;
output.write(bytes,0,i);
}
System.out.println("successed"+file.getAbsoluteFile().getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(null!=output)output.close();
if(null!=socket)socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package com.dasenlin.socket;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;
public class FileClient {
public static void main(String[] args) {
Scanner csan = new Scanner(System.in);
String ip = "127.0.0.1";
Integer port = 8888;
System.out.println("请输入文件名:");
String filepath=csan.nextLine();
Thread t = new Thread(new ClientFile(ip,port,filepath));
t.start();
}
}
class ClientFile implements Runnable{
private String ip;
private Integer port;
private String filepath;
public ClientFile(String ip,Integer port,String filepath) {
this.ip=ip;
this.port=port;
this.filepath=filepath;
}
@Override
public void run() {
BufferedOutputStream out =null;
BufferedInputStream input=null;
try {
Socket socket = new Socket(ip,port);
out = new BufferedOutputStream(socket.getOutputStream());
input = new BufferedInputStream(new FileInputStream(new File(filepath)));
byte [] bytes = new byte[1024];
int i=-1;
while((i=input.read(bytes))!=-1){
out.write(bytes,0,i);
}
out.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(null!=out)out.close();
if(null!=input)input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package com.dasenlin.socket;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
public class ChartServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
while(true){
final Socket socket = server.accept();
Thread t1 = new Thread(){
@Override
public void run(){
try {
DataInputStream input = new DataInputStream(socket.getInputStream());
while(true){
String s = input.readUTF();
System.out.println("客户端说:"+s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
t1.start();
Thread t2 = new Thread(){
@Override
public void run(){
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
try {
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
while(true){
String s = br.readLine();
out.writeUTF(s);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
};
t2.start();
}
}
}
package com.dasenlin.socket;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.net.UnknownHostException;
public class ChartClient {
public static void main(String[] args) throws UnknownHostException, IOException {
final Socket s = new Socket("127.0.0.1",8888);
Thread t1 = new Thread(){
@Override
public void run(){
DataInputStream input;
try {
input=new DataInputStream(s.getInputStream());
while(true){
String s = input.readUTF();
System.out.println("服务端说:"+s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
t1.start();
Thread t2 = new Thread(){
@Override
public void run(){
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "utf-8"));
try {
DataOutputStream out = new DataOutputStream(s.getOutputStream());
while(true){
String s=br.readLine();
out.writeUTF(s);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
};
t2.start();
}
}