java网络编程 socket


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();
            
        
    }
}

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值