实训第四天(客户端服务器通信)

实训第四天(客户端服务器通信)

本机表示形式的四种形式

127.0.0.1
192.168.1.112
localhost
电脑自身名字

客户端和服务器的通信

TCP通信

//客户端
public class testclient {



       public static void main(String[] args) throws UnknownHostException, 
IOException {

             Socket <u>c</u> =new Socket("localhost",8888);

             

                    OutputStream out = c.getOutputStream();

                    InputStream in =c.getInputStream();

                    out.write("我是客户端".getBytes());

                    //将流置于流末尾

                    c.shutdownOutput();

                    out.flush();

                    byte b [] = new byte[1024];

                    int sum;

                    String str1 = "";

                    while((sum=in.read(b))!=-1) {

                           String str = new String (b,0,sum);

                           str1+=str;

                    }

                    System.out.println("服务器说"+str1);

             

       }



}

//服务器
public class testserver {



       public static void main(String[] args) throws IOException {

             //创建服务端对象,指定端口

             ServerSocket <u>s</u> = new ServerSocket(8888);

             while(true) {

                    System.out.println("服务器已启动……");

                    //监听端口

                    Socket c =s.accept();

                    //获取客户端输入流

                    InputStream in =c.getInputStream();

                    //获得客户端输出流

                    OutputStream out =c.getOutputStream();

                    //获取输入信息

                    byte b[] =new byte[1024];

                    int sum;

                    String str1 = "";

                    while((sum=in.read(b))!=-1) {

                           String str = new String (b,0,sum);

                           str1+=str;

                    }

                    System.out.println("客户端说"+str1);

                    out.write("我是服务器".getBytes());

                    out.flush();

                    out.close();

                    

             }

       }



}


UDP通信

//客户端
//package udpclient;
import java.io.*; 
import java.net.*; 
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
//package udpclient;客户端
import java.io.*; 
import java.net.*; 
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.ServerSocket;

public class udpClient {
	public static void main(String args[]) throws Exception 
    { 
  
      BufferedReader inFromUser =  new BufferedReader(new InputStreamReader(System.in)); 
  
      DatagramSocket ClientSocket = new DatagramSocket(); 
  
      InetAddress IPAddress = InetAddress.getByName("localhost"); 
      
      byte[ ] sendData = new byte[100]; 
      byte[ ] receiveData = new byte[100]; 
      System.out.println("please input some words:");
      while(true){
      String sentence = inFromUser.readLine(); 
      sendData = sentence.getBytes();         
      DatagramPacket sendPacket =  new DatagramPacket(sendData, sentence.length(), IPAddress, 9876);//创建一个用于发送数据报的DatagramPacket类对象。
 
    	  
    	      ClientSocket.send(sendPacket); 
    	  
    	      DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); 
    	  
    	      ClientSocket.receive(receivePacket); 
    	  
    	      String modifiedSentence =  new String(receivePacket.getData()); 
    	  
    	      System.out.println("FROM Server:" + modifiedSentence); 
    	      
    	} 
      	//ClientSocket.close(); 
    }
}


//服务器
import java.io.*; 
import java.net.*; 

public class udpserver {
	public static void main(String args[]) throws Exception 
    { 
  
      DatagramSocket ServerSocket = new DatagramSocket(9876); //创建用于数据报通信的socket对象,并且把它绑定到本地主机指定的端口port。 
  
      byte[] receiveData = new byte[100]; 
      byte[] sendData  = new byte[100]; 
      System.out.println("waiting......");
      while(true) 
        { 
  
          DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); //创建一个用于接收数据报的DatagramPacket类对象。

          ServerSocket.receive(receivePacket); 
          String sentence = new String(receivePacket.getData(),0,receivePacket.getLength()); 
          
          InetAddress IPAddress = receivePacket.getAddress();   
          int port = receivePacket.getPort(); //客户端端口 
          //System.out.println("FROM Client:" + sentence+" ip:"+IPAddress.toString()+",port:"+port); 
           String capitalizedSentence = sentence.toUpperCase(); 

          sendData = capitalizedSentence.getBytes(); 
  
          DatagramPacket sendPacket = new DatagramPacket(sendData, capitalizedSentence.length(), IPAddress, port); //创建一个用于发送数据报的DatagramPacket类对象。
  
          ServerSocket.send(sendPacket); 
        } 
      //ServerSocket.close();
    } 

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值