ServerSocket和Socket

前言

用ServerSocket和Socket做了个Server、Client通信的demo,以及学习下在这个demo过程中用到java.net、java.io包下几个常用的类。

Server

import java.net.*;import java.io.*;public class HttpServer{    
    public static void main(String[] args){        new HttpServer().start();
    }    
    private ServerSocket serversocket=null;    
    public HttpServer(){        try{
            serversocket=new ServerSocket(5000);//监听客户端端口5000的socket请求
            System.out.println("服务器启动");
        }catch(IOException e){
            e.printStackTrace();
        }
    }    public void start(){
        Socket socket=null;        while(true){            try{

                socket=serversocket.accept(); //接受客户端请求socket
                System.out.println("address:"+socket.getInetAddress()+":"+socket.getLocalPort());

                
                OutputStream os =socket.getOutputStream();
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));                //向客户端发送一条消息
                bw.write("测试服务器通信\n");
                bw.flush();

            }catch(IOException e){
                e.printStackTrace();
                System.out.println("连接断开");
            }finally{                try{                    if(socket !=null){
                        socket.close();
                    }
                }catch(IOException e){
                    
                }
            }
        }
    }
}

Client

import java.net.*;import java.io.*;public class Client{    
    public static void main(String[] args){
        Socket socket=null;        try{
            socket =new Socket("127.0.0.1",5000);
            
            
            InputStream is =socket.getInputStream();
            InputStreamReader isr=new InputStreamReader(is);
            BufferedReader br =new BufferedReader (isr);
            String mess=br.readLine();
            
            System.out.println("mess:"+mess);
        }catch(IOException e){
            e.printStackTrace();
        }finally{            try{                if(socket !=null){
                    socket.close();
                }
            }catch(IOException e){
                
            }
        }
        
    }
    
}

总结

java.net包内几个常用的类:

ServerSocket、

Socket、

OutputStream、InputStream、

     InputStreamReader、OutputStreamWriter、

     BufferedReader、BufferedWriter、

InetAddress、

时间: 2024-10-11 04:27:28

ServerSocket和Socket的相关文章

ServerSocket与Socket类

ServerSocket与Socket类 TCP套接字协议: TCP最主要的特征就是能够建立长时间的连接,而且能够保证数据安全的送达,但是速度比较慢.使用TCP进行连接的时候会有三次握手,之后才建立起服务器与客户端的连接,因为TCP的链接习惯是询问对方机器是否存在,不存在就不会建立连接,存在才会建立连接. 示意图: ServerSocket类: 在Java中想要使用TCP协议做编写服务端的话,需要使用到ServerSocke类,这个类是TCP协议的. TCP协议的操作类都在java.net包下放

Java网络编程(ServerSocket和Socket)

服务器端 package org.tcp; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class HelloServer { public static void main(String[] args) throws Exception{ ServerSocket server = null; Socket client = null; PrintStream

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port); 这个使用指定的端口去创建ServerSocket,IP地址使用默认的本地IP地址. (2) ServetSocket(int port,int backlog); 除了端口外,还有一个用来改变队列长度参数的backlog,指

【Android笔记】ServerSocket 与 Socket的区别

1 ServerSocket类    创建一个ServerSocket类,同时在运行该语句的计算机的指定端口处建立一个监听服务,如:    ServerSocket MyListener=new ServerSocket(600):    这里指定提供监听服务的端口是600,一台计算机可以同时提供多个服务,这些不同的服务之间通过端口号来区别,不同的端口号上提供不同的服务.为了随时监听可能的Client请求,执行如下的语句:    Socket LinkSocket=MyListener.acce

线程实现ServerSocket和Socket实现数据交互

定义一个MyServer类 import java.io.IOException;import java.net.ServerSocket; public class MyServer { public static void main(String[] args) { try { System.out.println("服务器启动"); ServerSocket ss = new ServerSocket(80); while (true) { new MyThread(ss.acc

网络I/O模型--03非阻塞模式(ServerSocket与Socket的超时处理)--解除accept()、 read()方法阻塞

对于阻塞方式的一种改进是在应用程序层面上将 "一直等待 "的状态主动打开: 这种模式下,应用程序的线程不再一直等待操作系统的 I/O状态,而是在等待一段时间后就解除阻塞.如果没有得到想要的结果,则再次进行相同的操作 . 这样的工作方式,保证了应用程序的线程不会一直阻塞,而可以进行一些其他工作一一例如软件业务层面上暂时不需要这些网络数据的操作过程 服务端代码(对accept()方法也解除阻塞) package testBlockSocket; import java.io.IOExcep

Java中使用ServerSocket和Socket的多线程示例

开始...1.服务器端: public class ServerSocketApp { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(9999); System.out.println("服务已启动"); while (true) { Socket socket = serverSocket.accept(); System.out.println(

JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)

通过TCP建立可靠通讯信道 1)为了对应TCP协议里的客户端和服务器端,Socket包提供了Socket类和ServerSocket类. 2)Socket类构造函数及相关方法 Public Socket(); public Socket(InetAddress address,int port);//本机IP和端口 public Socket(Striing host,int port);//本机IP和端口 public void connect(SocketAddress endpoint);

the socket and serversocket in java

the client port: package com.socket; import java.io.IOException;import java.io.OutputStream;import java.io.PrintStream;import java.net.Socket;import java.net.UnknownHostException; public class MyClient {                            public static void