java socket点对点以及点对面编程实例

转载 2012年03月30日 10:07:57

和socket编程有关的几个类:

InetAddress

Socket:用在客户端

ServerSocket:用在服务器端

一。点对点通信

服务器端:

package server;
import java.io.*;
import java.net.*;
public class Server {
private int port;
public Server(int port){
   this.port=port;
   start();
}
//将从客户端收到的信息转化为大写的
public String process(String line){
   return line.toUpperCase();
}
public void start(){
   try{
     //根据端口创建套接字
     ServerSocket myscoket=new ServerSocket(port);
     //显示连接信息
     System.out.println("服务器启动完成,监听端口在"+port);
     System.out.println("正在等待客户连接.........");
     //挂起等待客户的请求
     Socket connection=myscoket.accept();
         //测试
         System.out.println("客户发来连接请求.........");
     //获取读取客户端的数据流
     BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));
     //获取写往客户端的数据输出流,true表示自动刷新
     PrintWriter out=new PrintWriter(connection.getOutputStream(),true);
     //向客户发送欢迎的信息
     out.println("您好,服务器连接成功!");
     out.println("输入bye断开与服务器的连接");
     boolean done=false;
     while(!done){
       //读取客户端的内容
       String line=in.readLine();
       if(line==null){
         done=true;
       }else{
         //从服务器端显示客户端发送的信息
         System.out.println("从客户端来的内容"+line);
         //信息处理
         String message=process(line);
         //向客户端发送信息
         out.println("从服务器端口发送的信息"+message);
         if(line.trim().equals("BYE"))
           done=true;
       }
     }
     //关闭通信
     connection.close();
   }catch(Exception e){
     System.out.println(e);
   }
}
}
package server;
public class ServerDemo {
   /**
   * @param args
   */
   public static void main(String[] args) {
     // TODO Auto-generated method stub
if(args.length!=1){
   System.out.println("运行方式:java Server <端口号>");
   return;
}
try{
   //获得端口号
   int port=Integer.parseInt(args[0]);
   Server myserver=new Server(port);
}catch(Exception e){
   System.out.println(e);
}
   }
}

客户端:

package client;
import java.io.*;
import java.net.*;
public class Client {
private String host;
private int port;
public Client(String host,int port){
   this.host=host;
   this.port=port;
   connect();
}
public void connect(){
   try{
     Socket connection;
     if(host.equals("localhost"))
     {connection=new Socket(InetAddress.getLocalHost(),port);}
     else
      { connection=new Socket(InetAddress.getByName(host),port);}
     //获得从键盘输入流
     BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
     //获得服务器写内容的数据流
     PrintWriter out=new PrintWriter(connection.getOutputStream(),true);
     //获得接收服务器发送内容的输入流
     BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));
     //从服务器获得欢迎信息
     System.out.println("服务器信息:"+in.readLine());
     System.out.println("服务器信息:"+in.readLine());
     //提示用户输入
     System.out.print("请输入>");
     boolean done=false;
     while(!done){
       //从键盘上读取字符
       String line=stdin.readLine();
       //发送到服务端
       out.println(line);
       //如果读到bye则结束循环
       if(line.equalsIgnoreCase("bye"))
         done=true;
       //从服务器读取字符串
       String info=in.readLine();
       //显示从服务器发送来的数据
       System.out.println("服务器信息:"+info);
       //提示用户输入
       if(!done)
         System.out.print("请输入>");
     }
     //关闭
     connection.close();
   }catch(SecurityException e){
     System.out.println("连接服务器出现安全问题!");
   }catch(IOException e){
     System.out.println("连接服务器出现I/O错误!");
   }
   }
}
package client;
public class ClientDemo {
   /**
   * @param args
   */
   public static void main(String[] args) {
     // TODO Auto-generated method stub
if(args.length!=2){
   System.out.println("程序运行方式:java client <服务器名称><端口号>");
   return;
}
String host=args[0];
try{
   int port=Integer.parseInt(args[1]);
   Client myserver=new Client(host,port);
}catch(Exception e){
   System.out.println(e);
}
   }
}


二。点对面通信

服务端:

package server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server extends ServerSocket {
private int port;
//private Socket connection;
public Server(int port)throws IOException{
   super(port);
   this.port=port;
   System.out.println("服务器启动完成,监听端口在"+port);
   System.out.println("正在等待客户连接.....");
   try{
   while(true){
     //挂起,直到客户请求
     Socket connection=accept();
     //建立服务线程
     new ServerThread(connection,port);
   }
   }catch(IOException e){
     System.out.println(e);
   }finally{
     close();
   }
}
}
package server;
import java.io.*;
import java.net.*;
public class ServerThread extends Thread{
private int port;
private Socket connection;
private BufferedReader in;
private PrintWriter out;
public ServerThread(Socket s,int port)throws IOException{
   this.port=port;
   this.connection=s;
   //获取读取客户端的数据流
in=new BufferedReader(new InputStreamReader(connection.getInputStream
(),"gb2312"));
   //获取写往客户端的数据输出流,true表示自动刷新
   out=new PrintWriter(connection.getOutputStream(),true);
   //向客户发送欢迎的信息
   out.println("您好,服务器连接成功!");
   out.println("输入bye断开与服务器的连接");
   //启动线程
   start();
}
//将从客户端收到的信息转化为大写的
public String process(String line){
   return line.toUpperCase();
}
public void run(){
   try{
     boolean done=false;
     while(!done){
       String line=in.readLine();
       if(line==null)
         done=true;
       else{
                 if(line.trim().equals("bye"))
           done=true;
         System.out.println("从客户端来的内容"+line);
         String message=process(line);
         out.println("从服务器端口发出的内容"+message);

       }
     }
System.out.println("bye bye!");
     //关闭通信
     connection.close();
   }catch(Exception e){
     System.out.println(e);
   }
}
}
package server;
public class ServerDemo {
   /**
   * @param args
   */
   public static void main(String[] args) {
     // TODO Auto-generated method stub
if(args.length!=1){
   System.out.println("运行方式:java Server <端口号>");
   return;
}
try{
   //获得端口号
   int port=Integer.parseInt(args[0]);
   Server myserver=new Server(port);
}catch(Exception e){
   System.out.println(e);
}
   }
}


客户端:

package client;
import java.io.*;
import java.net.*;
public class Client {
private String host;
private int port;
public Client(String host,int port){
   this.host=host;
   this.port=port;
   connect();
}
public void connect(){
   try{
     Socket connection;
     if(host.equals("localhost"))
       connection=new Socket(InetAddress.getLocalHost(),port);
     else
      connection=new Socket(InetAddress.getByName(host),port);
     //获得从键盘输入流
     BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
     //获得服务器写内容的数据流
     PrintWriter out=new PrintWriter(connection.getOutputStream(),true);
     //获得接收服务器发送内容的输入流
     BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));
     //从服务器获得欢迎信息
     System.out.println("服务器信息:"+in.readLine());
     System.out.println("服务器信息:"+in.readLine());
     //提示用户输入
     System.out.print("请输入>");
     boolean done=false;
     while(!done){
       //从键盘上读取字符
       String line=stdin.readLine();
       //发送到服务端
       out.println(line);
       //如果读到bye则结束循环
       if(line.equalsIgnoreCase("bye"))
         done=true;
       //从服务器读取字符串
       String info=in.readLine();
       //显示从服务器发送来的数据
       System.out.println("服务器信息:"+info);
       //提示用户输入
       if(!done)
         System.out.print("请输入>");
     }
     //关闭
     connection.close();
   }catch(SecurityException e){
     System.out.println("连接服务器出现安全问题!");
   }catch(IOException e){
     System.out.println("连接服务器出现I/O错误!");
   }
   }
}
package client;
public class ClientDemo {
   /**
   * @param args
   */
   public static void main(String[] args) {
     // TODO Auto-generated method stub
if(args.length!=2){
   System.out.println("程序运行方式:java client <服务器名称><端口号>");
   return;
}
String host=args[0];
try{
   int port=Integer.parseInt(args[1]);
   Client myserver=new Client(host,port);
}catch(Exception e){
   System.out.println(e);
}
   }
}



点对点编程代码,含java、C++都有代码

  • 2011年04月25日 19:45
  • 1.15MB
  • 下载

java socket点对点以及点对面编程实例

java socket点对点以及点对面编程实例 和socket编程有关的几个类:InetAddressSocket:用在客户端ServerSocket:用在服务器端一。点对点通信服务器端:packag...
  • gotohbu
  • gotohbu
  • 2009年04月02日 10:09
  • 1703

socket实现的一个基本点对点聊天程序

p2pcli.c #include #include #include #include #include #include #include #include #include ...
  • fuyuehua22
  • fuyuehua22
  • 2014年05月10日 19:31
  • 5315

Socket 点对面 通信

Socket 点对面 通信 创建多客户连接的socket通信的方式,是在服务器端创建客户连接请求的监听线程,一旦客户发起请求,则服务器端用户创建和此客户端通信线程的和Socket,服务器把此客户端的...
  • luobing_csdn
  • luobing_csdn
  • 2017年03月27日 11:14
  • 68

socket 实现点对点发送消息

socket:套接字,描述 ip 和 port;socket 在建立网络连接时使用;通过socket可以向网络发送请求以及应答网络请求 serverSocket:主要应用于服务器端,监听 socket...
  • qq_23039605
  • qq_23039605
  • 2017年09月03日 16:32
  • 185

Java基于UDP用Socket实现点对点聊天

基于UDP的聊天实现,采用读,写分离,用不同的线程实现。 主要实现类为DatagramSocket()与DatagramPacket(),默认端口为8009,Ip地址需要自己输入。 Reader线...
  • fengdl123
  • fengdl123
  • 2016年08月17日 16:51
  • 1710

socket编程之点对点聊天程序

点对点聊天程序并解决上一篇中父进程退出,子进程不退出情况
  • qq_33832591
  • qq_33832591
  • 2017年08月11日 14:15
  • 234

点对面的通讯(Dos版聊天) .

view plaincopy to clipboardprint? //服务器端   import java.io.IOException;  import java.net.ServerS...
  • younger_z
  • younger_z
  • 2011年10月31日 21:48
  • 211

Java Socket 简单编程实例

之前照着书写了一个实例,最后一次java实验也就结束了,后来还有一个是写计算机网络课程设计好像写到了套接字Socket 现在又把重新拿出来,感觉是有不少东西要学习的。 所谓socket通常也称作"...
  • Candyys
  • Candyys
  • 2017年06月27日 21:27
  • 287

使用Socket进行设备间点对点连接传输数据

对GCDAsyncSocket和GCDAsyncUdpSocket进行封装, 实现了服务器通过UDP广播向局域网发送数据, 客户端接收后与服务器进行TCP连接, 成功连接后进行点对点通信....
  • liangshi1
  • liangshi1
  • 2016年06月04日 15:55
  • 3691
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java socket点对点以及点对面编程实例
举报原因:
原因补充:

(最多只允许输入30个字)