网络编程

简介: 网络编程

网络编程

tcp连接

tcpclient

客户端程序

package tcpudp;
import java.net.*;
import java.util.Scanner;
import java.io.*;
public class TCPClient {
  public static void main (String args[]) {
    // arguments supply message and hostname
    Socket client = null;
    int serverPort = 20005;
    try{
      client = new Socket("127.0.0.1", serverPort);
      //BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        Scanner input = new Scanner(System.in);
      //获取Socket的输出流,用来发送数据到服务端  
        PrintStream out = new PrintStream(client.getOutputStream());
            //获取Socket的输入流,用来接收从服务端发送过来的数据  
        BufferedReader buf =  new BufferedReader(new InputStreamReader(client.getInputStream()));
        boolean flag = true;
        while(flag){
              System.out.print("输入信息:");
              //String str = input.readLine();
              String str = input.nextLine();
              //发送数据到服务端  
              out.println(str);
              if("bye".equals(str)){
                  flag = false;
              }else{
                  try{
                      //从服务器端接收数据有个时间限制(系统自设,也可以自己设置),超过了这个时间,便会抛出该异常
                      String echo = buf.readLine();
                      System.out.println(echo);
                  }catch(SocketTimeoutException e){
                      System.out.println("Time out, No response");
                  }
              }
          }
          input.close();
//          if(client != null){
//              //如果构造函数建立起了连接,则关闭套接字,如果没有建立起连接,自然不用关闭
//              client.close(); //只关闭socket,其关联的输入输出流也会被关闭         
//          }
        }catch (IOException e){System.out.println("readline:"+e.getMessage());
      }finally{
        if(client!=null) 
          try {client.close();
          }catch (IOException e){System.out.println("close:"+e.getMessage());}} 
      }
}

package tcpudp;

import java.net.*;

import java.io.*;

public class TCPServer {

public static void main (String args[]) {
  System.out.println("Server is waiting....");
  try{
    // the sharing port, the value must more than 65536
    int serverPort = 20005;
    // the listenSocket represent a port of server
    ServerSocket listenSocket = new ServerSocket(serverPort);
    while(true) {
      //the listenSocket represent a port of client
      Socket clientSocket = listenSocket.accept();
      ServerThread serverThread = new ServerThread(clientSocket);
      serverThread.run(); 
    }
  } catch(IOException e){
    System.out.println("Listen socket:"+e.getMessage());}
}

}

class ServerThread implements Runnable {

private Socket client = null;
public ServerThread(Socket client){
    this.client = client;
}
public void run() {
    try{
        //获取Socket的输出流,用来向客户端发送数据
        PrintStream out = new PrintStream(client.getOutputStream());
        //获取Socket的输入流,用来接收从客户端发送过来的数据
        BufferedReader buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
        boolean flag =true;
        while(flag){
            //接收从客户端发送过来的数据
            String str =  buf.readLine();
            if(str == null || "".equals(str)){
                flag = false;
            }else{
                if("bye".equals(str)){
                    flag = false;
                }else{ 
                  System.out.println("Receiving is : "+ str);
                    out.println("echo:" + str);
                }
            }
        }
        out.close();
        client.close();
    }catch(Exception e){
        e.printStackTrace();
   }
} 

}


相关文章
|
5月前
|
消息中间件 Kubernetes 网络协议
网络编程一些问题总结
网络编程一些问题总结
|
15天前
|
网络协议 程序员 API
初识网络编程
本文介绍了网络编程的重要概念,包括IP地址、端口号和协议。IP地址是设备在网络中的唯一标识,IPv4已用尽,IPv6提供了更多地址。端口号用于区分设备上的不同应用程序,取值范围为0~65535。协议定义了网络传输规则,常分为TCP/IP五层模型和OSI七层模型。文章还讨论了TCP与UDP的区别,并提供了UDP协议的简单示例。
38 0
初识网络编程
|
5月前
|
网络协议 API
|
12月前
|
网络协议 关系型数据库 MySQL
网络编程初识
网络编程初识
50 0
|
Java C++
4. 网络编程
4. 网络编程
52 0
|
网络协议
64.【网络编程】(一)
64.【网络编程】
37 0
|
网络协议
64.【网络编程】(二)
64.【网络编程】
36 0
|
应用服务中间件
64.【网络编程】(三)
64.【网络编程】
36 0