首页 > 编程语言 > 详细

Java学习笔记之基于TCP协议的socket

时间:2016-08-26 01:08:43      阅读:192      评论:0      收藏:0      [点我收藏+]

可以一直输入,而不是一问一答:

开两个线程,一个负责收,一个负责发。

1.先运行:

  

package com.zr.javase0825;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class User1 implements Runnable {
    
    //String pdd="read";
    Socket sock;
    //Socket sockC;
    public static void main(String[] args)  {
        User1 u1=new User1();
        
        ServerSocket ssock;
        try {
            ssock = new ServerSocket(1234);
            u1.sock=ssock.accept();
            
        //    u1.sockC=new Socket("127.0.0.1",5678);
            
            Thread t1=new Thread(u1,"read");
            Thread t2=new Thread(u1,"write");
            t1.start();
            t2.start();
            
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
    
    public void read(Socket sock){
        try {
            BufferedReader buff=new BufferedReader(new InputStreamReader(sock.getInputStream()));
            System.out.println("user2:"+buff.readLine());
                    
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
    }
    
    public void write(Socket sockC){
        try {
            BufferedWriter buff=new BufferedWriter(new OutputStreamWriter(sockC.getOutputStream()));
            BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
            String str= bf.readLine();
            buff.write(str+"\n");
            buff.flush();
                    
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
    }

    @Override
    public void run() {
        
        if(Thread.currentThread().getName().equals("read"))
            while(true)
                read(sock);
        else 
            while(true)
                write(sock);
        
    }
    
    
}

后运行:

package com.zr.javase0825;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;

public class User2 implements Runnable {
    
    //String pdd="read";
    Socket sock;
    //Socket sockC;
    public static void main(String[] args) {
        User2 u1=new User2();
        
        //ServerSocket ssock;
        try {
            //ssock = new ServerSocket(5678);
            //u1.sock=ssock.accept();
            
            u1.sock=new Socket("127.0.0.1",1234);
            
            Thread t1=new Thread(u1,"read");
            Thread t2=new Thread(u1,"write");
            t1.start();
            t2.start();
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
    
    public void read(Socket sock){
        try {
            BufferedReader buff=new BufferedReader(new InputStreamReader(sock.getInputStream()));
            System.out.println("user2:"+buff.readLine());
                    
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
    }
    
    public void write(Socket sockC){
        try {
            BufferedWriter buff=new BufferedWriter(new OutputStreamWriter(sockC.getOutputStream()));
            BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
            String str= bf.readLine();
            buff.write(str+"\n");
            buff.flush();
                    
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
    }

    @Override
    public void run() {
        Scanner in=new Scanner(System.in);
        if(Thread.currentThread().getName().equals("read"))
            while(true)
                read(sock);
        else 
            while(true)
                write(sock);
        
    }
    
    
}

 

Java学习笔记之基于TCP协议的socket

原文:http://www.cnblogs.com/qingyibusi/p/5808790.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!