Server package com.witwicky.socket.basicsocket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) {
之前在工作中写过一些Socket客户端与服务端的代码,但是当时没有时间仔细研究,只能不报错先过的态度,对其细节了解不深,写的代码有各种问题也浑然不知,只是业务量级以及对接方对接代码没有出现出格的情况所以问题不得暴露. 首先通过单线程Socket做服务端是一种BIO的做法,这种做法会导致服务端只能同时接收一笔请求,性能非常差 下面我把BIO的代码帖一下,有需要的同学可以参考 服务端 public class SocketIO { //客户端编码,客户端发送编码与服务端一致,则服务端无需进行解码特殊
网络数据是大端模式,而c#中的数据小端结构,那么在读写网络数据的时候需要进行转换.c#类库IPAddress已经封装了大小端的转换. 封装代码如下: using System.IO; using System.Net; using System; namespace Framework { public class NetStream { private MemoryStream stream; private BinaryReader reader; private BinaryWrite