Socket编程

import java.net.*;
import java.io.*;

public class TCPServer{
	public static void main(String[] args) throws Exception{
		ServerSocket s=new ServerSocket(1211);
		Socket ss=s.accept();
		
		DataInputStream dis=new DataInputStream(ss.getInputStream());
		ServerThreadReader r1=new ServerThreadReader(dis);
		r1.start();
			
			DataOutputStream dos=new DataOutputStream(ss.getOutputStream());
		ServerThreadWriter w1=new ServerThreadWriter(dos);
		w1.start();
		
	}
}
		
			//进程读客户端的数据
	class ServerThreadReader extends Thread{
		private DataInputStream dis;
		public ServerThreadReader(DataInputStream dis){
			this.dis=dis;
			}
		public void run(){
//		DataInputStream dis=new DataInputStream(ss.getInputStream());
		String msg=null;
		while(true){
			try{
		   msg=dis.readUTF();
		   
		   System.out.println("Client:"+msg);
		   if(msg.equals("bye")){
		   	System.out.println("Client退出拉!Server也要退出啦!");
		   	
		   	
		   	System.exit(0);
		   	}
		   
	    }catch(Exception e){
		   System.out.println("出错啦!");
		   System.out.println(e);
		   System.exit(-1);
		  }
	  }
	}
		
	}
	
	//进程发送数据
	class ServerThreadWriter extends Thread{
		private DataOutputStream dos;
		public ServerThreadWriter(DataOutputStream dos){
			this.dos=dos;
			}
		public void run(){
//		DataOutputStream dos=new DataOutputStream(ss.getOutputStream());
		BufferedReader in= new BufferedReader(new InputStreamReader(System.in));
		String msg=null;
		while(true){
			try{
			msg=in.readLine();
			dos.writeUTF(msg);
			if(msg.equals("bye")){
		   	System.out.println("Server退出!");
		   	dos.close();
		   	System.exit(0);
		   	}
		  }catch(Exception e){
		  	System.out.println("出错啦!");
		  	System.exit(-1);
		  	}
			
			
			}
		}
		
	}
	

	




import java.net.*;
import java.io.*;

public class TCPClient{
	public static void main(String[] args) throws Exception{
		
		Socket s=new Socket("127.0.0.1",1211);
		DataInputStream dis1=new DataInputStream(s.getInputStream());
		ClientThreadReader tr=new ClientThreadReader(dis1);
		tr.start();
		
		DataOutputStream dos1=new DataOutputStream(s.getOutputStream());
		ClientThreadWriter tw=new ClientThreadWriter(dos1);
		tw.start();
	}
}
		
		//thread to read!
		class ClientThreadReader extends Thread{
			private DataInputStream dis;
			
			public ClientThreadReader(DataInputStream dis){
				this.dis=dis;
				}
			public void run(){
//			 dis=new DataInputStream(s.getInputStream());
				String msg;
				try{
				while(true){
					msg=dis.readUTF();
					
					System.out.println("Server:"+msg);
					if(msg.equals("bye")){
						System.out.println("Server退出!Client也要退出啦!");
						System.exit(0);
						}
					
					}
					}catch(Exception e){
						System.out.println("出错啦!");
						System.exit(-1);
						
						}
				}
			}
			
			
			//thread to write
			class ClientThreadWriter extends Thread{
				private DataOutputStream dos;
				public ClientThreadWriter(DataOutputStream dos){
					this.dos=dos;
					}
				
				public void run(){
//					DataOutputStream dos=new DataOutputStream(s.getOutputStream());
					BufferedReader bw=new BufferedReader(new InputStreamReader(System.in));//读入键盘输入的数据!   霸气!!!
					String msg;
					try{
					while(true){
						
						msg=bw.readLine();
						dos.writeUTF(msg);
						if(msg.equals("bye")){
						System.out.println("Client主动退出!");
						System.exit(0);
						}
						
						}
					}catch(Exception e){
						System.out.println("出错啦!");
						System.exit(-1);
						}
					}
				}
	



切记啊:TCPClient.java中的类名不能和TCPServer.java中的类名一样!!!在这上面折腾了很久啊。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值