Tcp通信实现两机互相通信

Tcp通信实现两机互相通信

//QQ客户端

import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class yc extends JFrame
{
 public static JLabel jl1,jl2;
 public static TextArea ta1,ta2;
 public static JButton jb1,jb2;
 public static Container cp1;
  static Socket svr;
 public static PrintWriter out;
 
 
 public static void main(String arg[])
 {
  JFrame jf=new JFrame("与小新聊天--VIP             客户端");
  jf.setSize(500,450);
  jf.setResizable(false);
  jf.locate(100,100);
//  cp1=getContentPane();
  jl1=new JLabel("连接中....");
  ta1=new TextArea();
  ta2=new TextArea();
  jb1=new JButton("发送");
  jb1.addActionListener(new Listener());
  jb2=new JButton("清空");
  jb2.addActionListener(new Listener());
  jf.getContentPane().setLayout(new FlowLayout());
  jf.getContentPane().add(jl1);
   jf.getContentPane().add(ta1);
   jf.getContentPane().add(ta2);
   jf.getContentPane().add(jb1);
   jf.getContentPane().add(jb2);
   
  jf.setVisible(true);
  try
  {
   target2 outmsg2=new target2();
   Thread outthread2=new Thread(outmsg2);
   outthread2.start();
   QQ();

   
   
  }
  catch(Exception e)
  {
   
  }
  
  
 }
 
static void QQ()throws Exception
{
  System.out.println("正在连接服务器,请稍候...");
  //与指定地址的服务器相连接
  svr=new Socket("127.0.0.1",3300);//要连接远程主机请填IP
 //svr=new Socket(InetAddress.getLocalHost(),3300)
  jl1.setText("与"+svr.getInetAddress()+"连接成功!请输出要传送的信息...");

 }
 
 
}

 


 class Listener implements ActionListener{
  public void actionPerformed(ActionEvent e)
  {
   
    if(e.getSource()==yc.jb2)
     {
        yc.ta1.setText("");
     }
    
    else
    {
     try
    {
     
     yc.out=new PrintWriter(yc.svr.getOutputStream());
     yc.out.println(yc.ta2.getText());
     yc.out.flush();
     yc.ta1.append("[自己]说:\n"+yc.ta2.getText()+"\n");
     yc.ta2.setText("");
 
   
    }
     catch(Exception ee)
     {
      
     }
     
    }
   
    

    
  }
 }
 
 
 
 
class target2 implements Runnable
{
 public void run()
 {
   
    while(true)
    {
     
   try
   {
    
    BufferedReader in=new BufferedReader(new InputStreamReader(yc.svr.getInputStream()));
      String str=in.readLine();
       str="[服务端"+yc.svr.getInetAddress()+"]说:\n"+str;
       yc.ta1.append(str+"\n");
   }
   
   catch(Exception ee)
   {
    ;
   } 
     
     
     
     }
 }
}
 

 

 

————————————————————————————————

 

 

//QQ服务端

import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class ycserver extends JFrame
{
 public static JLabel jl1;
 public static TextArea ta1,ta2;
 public static JButton jb1,jb2;
 public static Container cp1;
 public static ServerSocket svr; 
 public static Socket clt;
 public static Thread thread;
 public static int i=0;
 


  
 public static void main(String arg[])
 {
  JFrame jf=new JFrame("与杨彩聊天--VIP            服务端");
  jf.setSize(500,450);
  jf.locate(200,200);
  jf.setResizable(false);
  ta1=new TextArea();
  ta2=new TextArea();
  jb1=new JButton("发送");
  jb2=new JButton("清空");
  jl1=new JLabel("等待连接");
  jb1.addActionListener(new jb1Listener());
  jb2.addActionListener(new jb1Listener());
  jf.getContentPane().setLayout(new FlowLayout());
  jf.getContentPane().add(jl1);
   jf.getContentPane().add(ta1);
   jf.getContentPane().add(ta2);
   jf.getContentPane().add(jb1);
   jf.getContentPane().add(jb2);
   
  jf.setVisible(true);
  try
  {
   target outmsg=new target();
   Thread outthread=new Thread(outmsg);
   outthread.start();
   
   wait wait1=new wait();
   Thread waitthread=new Thread(wait1);
   waitthread.start();
   
   QQ();

   

  }
  catch(Exception e)
  {
   
  }
  
  
 }
 
 
static void QQ()throws Exception
{/*
 //建立服务器套节字
  svr=new ServerSocket(3300);
  System.out.println("等待连接....");
 //等待客户机接入
   clt=svr.accept();
    i++;
    ta1.setText(i+"");
 //获得客户IP地址
  System.out.println("连接请求来自:"+clt.getInetAddress());
  jl1.setText("连接请求来自:"+clt.getInetAddress());
  //建立I/O流
  */

   }
  
 }
 
 


 class jb1Listener implements ActionListener
 {
  public void actionPerformed(ActionEvent e)
  {
   if(e.getSource()==ycserver.jb2)
   {
    ycserver.ta1.setText("");
   }
   
   else
   {
     try
    {
          
    PrintWriter out=new PrintWriter(ycserver.clt.getOutputStream());
    out.println(ycserver.ta2.getText());
    out.flush();
     ycserver.ta1.append("[自己]说:\n"+ycserver.ta2.getText()+"\n");
     ycserver.ta2.setText("");
 
   
    }
     catch(Exception ee)
     {
      
     }
   }
  
  }
 }

 

class target implements Runnable
{
 public void run()
 {
   
    while(true)
    {
     
   try
   {    
    BufferedReader in=new BufferedReader(new InputStreamReader(ycserver.clt.getInputStream()));
      String str=in.readLine();
       str="[客户端在"+ycserver.clt.getInetAddress()+"]说:\n"+str;
       ycserver.ta1.append(str+"\n");
   }
   
   catch(Exception ee)
   {
    ;
   } 
     
     
     
     }
 }
}

 

class wait implements Runnable
{
 public void run()
 {
   
    while(true)
    {
     
   try
   {    
    //建立服务器套节字
  ycserver.svr=new ServerSocket(3300);
  System.out.println("等待连接....");
 //等待客户机接入
   ycserver.clt=ycserver.svr.accept();
    ycserver.i+=2;
    ycserver.ta1.setText(ycserver.i+"");
 //获得客户IP地址
  System.out.println("连接请求来自:"+ycserver.clt.getInetAddress());
  ycserver.jl1.setText("连接请求来自:"+ycserver.clt.getInetAddress());
  //建立I/O流
   }
   
   catch(Exception ee)
   {
    ;
   } 
     
     
     
     }
 }
}

 

 

 

Tcp通信实现两机互相通信_第1张图片
 
Tcp通信实现两机互相通信_第2张图片
 
 
 
 
 
源码下载:
http://www.blogjava.net/Files/yangcai/qq.rar

你可能感兴趣的:(Tcp通信实现两机互相通信)