Socket communication (Chat Room)

这篇博客展示了如何使用Java的Socket编程创建一个简单的服务器和客户端应用。服务器通过ServerSocket监听特定端口,当客户端连接时启动新线程处理通信。客户端则连接到服务器并发送消息,输入'exit'退出。此示例演示了基本的网络通信机制。
摘要由CSDN通过智能技术生成

在计算机领域中,Socket也被称为套接字编程,它是计算机之间进行通信的一种约定或者说是一种方式。

应用程序可以通过它发送或者接收数据,可以对其发送过来的内容像处理文件一样,打开、关闭或者读写等操作,套接字允许应用程序将I/O插入到互联网上,并与网络中的其他程序进行通信。

Server

package SocketDemo4;
​
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
​
public class S4 {
    static ServerSocket server;
​
    public S4(int port){
        try {
            System.out.println("Starting server~~");
            server = new ServerSocket(port);
            System.out.println("Server started!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
​
    public void start(){
        Scanner scanner = new Scanner(System.in);
        while (true) {
            try {
                Socket sa = server.accept();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            System.out.println("New Client (" + sa.getRemoteSocketAddress() + ") connected!");
                            InputStream is = sa.getInputStream();
                            InputStreamReader isr = new InputStreamReader(is);
                            BufferedReader br = new BufferedReader(isr);
                            String s;
                            while ((s= br.readLine()) != null){
                                System.out.println("Receive message from (" + sa.getRemoteSocketAddress() + "): " + s);
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
​
    public static void main(String[] args) {
        S4 s = new S4(16666);
        s.start();
    }
}

Client

package SocketDemo4;
​
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
​
public class C4 {
    static Socket client;
​
    public C4(int port){
        try {
            System.out.println("Starting client~~");
            client = new Socket("localhost",port);
            System.out.println("Client started!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
​
    public void start(){
        Scanner sc = new Scanner(System.in);
        String s;
        PrintWriter pw = null;
        try {
            OutputStream os = client.getOutputStream();
            pw = new PrintWriter(os,true);
        } catch (Exception e) {
            e.printStackTrace();
        }
        while (true){
            System.out.println("Please enter your message to server: ");
            s = sc.nextLine();
            if ("exit".equalsIgnoreCase(s)){
                pw.close();
                System.out.println("Client close!");
                break;
            }
            pw.println(s);
        }
    }
​
    public static void main(String[] args) {
        new C4(16666).start();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值