Socket编程实现简单的服务器与客户端互发消息

socket编程的大致步骤如下:
1、创建服务器端SocketServer,并定义SocketServer的监听端口;
2、ServerSocket调用accept( )方法,是指处于阻塞;
3、创建客户端的Socket,并设置服务器的IP和端口;
4、客户端发送连接请求,建立连接;
5、分别取得服务器和客户端Socket的InputStream和OutputStream;
6;利用Socket和ServerSocket进行数据传输。

其中比较重要的只是点是文件的I/O操作,以及Socket的几个主要API:

1、getInputStream();    //返回Socket接收到的InputStream
2、getOutputStream(); //返回Socket向外传输(另一端为接收)的OutputStream

3、ServerSocket 的accept() //使服务器处于阻塞状态,直到客户端连接

/*
*服务器端代码
*
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server
{
    public static void main(String[] args)
    {
        new Server();
    }

    public Server()
    {
        try
        {
            ServerSocket ss = new ServerSocket(8888);
            while (true)
            {
                // 服务器接收消息
                Socket s = ss.accept();
                InputStreamReader isr = new InputStreamReader(s
                        .getInputStream());
                BufferedReader in = new BufferedReader(isr);
                String line = in.readLine();
                System.out.println("Client发送的消息是:  " + line);

                // 把成功信息反馈回客户端
                PrintWriter out = new PrintWriter(s.getOutputStream(), true);
                out.println("已经接受到消息了!");

                out.close();
                in.close();
                isr.close();
                s.close();
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

    }
}

/*
*
*客户端代码
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client
{
    public static void main(String[] args)
    {
        new Client();
    }

    public Client()
    {
        try
        {
            System.out.println("正在连接Server中");

            Socket socket = new Socket("localhost", 8888);

            System.out.println("连接成功!");
            System.out.println();

            // 向服务器发消息
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    System.in));
            System.out.print("请输入信息:");
            out.println(br.readLine());

            // 接受服务器端消息
            BufferedReader in = new BufferedReader(new InputStreamReader(socket
                    .getInputStream()));
            System.out.println("Server回复的消息:  " + in.readLine());

            br.close();
            out.close();
            in.close();
            socket.close();
        }
        catch (UnknownHostException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}



  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值