java:java中的Socket 和 C#中的socket 比较

本文介绍了Java中的ServerSocketTest类,通过创建ServerSocket监听指定端口并接收客户端连接。每个接入的Socket会启动新线程进行处理。服务器端接收客户端输入并回应,直到收到'BEY'退出。对比C#的Socket实现,讨论了不同编程语言中Socket通信的异同。

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

package com.xudeyu.socket;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerSocketTest
{

public static void main(String[] args)
{
ServerTest test = new ServerTest();
test.acceptClient(9999);
}

}

class ServerTest
{
public void acceptClient(int port)
{
try
{
// 创建一个serverSocket,用于监听
ServerSocket server = new ServerSocket(port);

while (true)
{
int i = 1; // 接入的主机数量

// 接入一个新的Socket
Socket incomingsocket = server.accept();
System.out.println("Spawing " + i);

// 为每一个连接的Socket创建一个线程
Runnable r = new ServerThread(incomingsocket);
Thread t = new Thread(r);
t.start();
i++;
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

class ServerThread implements Runnable
{
// Socket
private Socket incoming;

public ServerThread(Socket i)
{
incoming = i;
}

@Override
public void run()
{
try
{

// 获取该套接字的输出流和输入流
InputStream inStream = incoming.getInputStream();
OutputStream outStream = incoming.getOutputStream();

// 打印套接字内的信息
Scanner in = new Scanner(inStream);

// 向套接字内输出信息
PrintWriter pw = new PrintWriter(outStream, true);

// 在控制台中向远处主机发送输入的消息
Scanner input = new Scanner(System.in);

pw.print("Hello ,Enter BEY to exit!");

// 直到读取到BEY 结束
//TODO 标记
boolean done = false;
while (!done &&input.hasNextLine())
{
String line = input.nextLine();
pw.println(">>>>>服务器发送:" + line);

pw.println("<<<<<主机发送:"+ in.nextLine());

if (line.toUpperCase().trim().equals("BEY"))
{
done = true;
}
}

}
catch (Exception e)
{
e.printStackTrace();
System.out.print("conn interrupt");
}
finally
{
try
{
incoming.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值