java---socket通信程序(传达文字)

本文通过一个简单的Java网络编程示例介绍了如何搭建一个基础的客户端与服务端通信模型。服务端使用ServerSocket监听指定端口,并接收客户端发来的消息;客户端则通过Socket连接到服务端并发送消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package L15.L;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by fangjiejie on 2017/3/6.
 * 服务端:接收端
 */
public class M {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(9800);/*创建一个ServerSocket类,同时在运行该语句的计算机
                                                      的指定端口处建立一个监听服务*/
        Socket client=server.accept();/*该语句调用了ServerSocket对象的accept()方法,
        这个方法的执行将使Server端的程序处于等待状态,程序将一直阻塞直到捕捉到一个来自Client端的请求,
        并返回一个用于与该Client通信的Socket对象client。此后Server程序只要向这个Socket对象读写
        数据,就可以实现向远端的Client读写数据。结束监听时,关闭ServerSocket对象:*/
        InputStream is=client.getInputStream();//用输入字节流读取,
        BufferedReader br=new BufferedReader(new InputStreamReader(is));//字节流转化为字符输入流
        boolean flag=true;
                while(flag){
                    String word=br.readLine();//将字符读取到word中
                    if(word.trim().toLowerCase().equals("q")){
                        System.out.println("byebye");
                        flag=false;
                    }
                    else {
                        System.out.println(word);
                    }
                }


    }
}
package L15.L;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
/**
 * Created by fangjiejie on 2017/3/6.
 * 客户端:发送端
 */
//PrintWriter out=new PrintWriter(cilent.getOutputString(),true); true 自动flash
public class N {
    public static void main(String[] args) {
        try {
            Socket client=new Socket("127.0.0.1",9800);/*Socket类的构造函数有两个参数,
            第一个参数是欲连接到的Server计算机的主机地址,第二个参数是该Server机上提供服务的端口号。*/
            PrintWriter out=new PrintWriter(client.getOutputStream(),true);
            /*client.getOutputStream()就是返回一个服务器与客户端的输出流,true是对PrintWriter
            out而言,就是强行把缓冲区的数据输出。client.getOutputStream()返回的是一个节点流,在
            它上面又套上了一个处理流PrintWriter ,便于输出数据。*/
            Scanner sc=new Scanner(System.in);
            while (sc.hasNext()){
                String word=sc.nextLine();
                out.println(word);
            }
            out.close();
            sc.close();
            client.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值