110,561
社区成员
发帖
与我相关
我的任务
分享
IPAddress ip = ip = IPAddress.Parse(socket_server_ip);;
//把ip和端口转化为IPEndPoint实例
IPEndPoint ipe = new IPEndPoint(ip, Convert.ToInt32(socket_server_port));
//创建一个Socket
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
connectDone.Reset();
c.BeginConnect(ipe, new AsyncCallback(ConnectCallback), c); //连接到服务器
connectDone.WaitOne(5000, false); //设置等待时间为5秒钟
if (c.Connected)
{
byte[] bs = Encoding.GetEncoding("gb2312").GetBytes(sendStr + "\r\n");
c.Send(bs, bs.Length, 0);//发送信息
byte[] buffer;
byte[] bufferTemp; //存储未接收全的数组值
byte[] buffer_lasttime; //上一次接收的BUFFER
while (true)
{
buffer = new byte[1024];
try
{
int iBytes = c.Receive(buffer, buffer.Length, 0);//从服务器端接受返回信息
//TODO:接收处理XXXXXXXXXXXXXXXX
Thread.Sleep(10);
}
catch (ArgumentNullException ex)
{
logg.Error("ArgumentNullException:" + ex.ToString());
}
catch (ArgumentOutOfRangeException ex)
{
logg.Error("ArgumentOutOfRangeException:" + ex.ToString());
}
catch (SocketException ex)
{
logg.Error("SocketException:" + ex.ToString());
}
catch (ObjectDisposedException ex)
{
logg.Error("ObjectDisposedException:" + ex.ToString());
}
catch (SecurityException ex)
{
logg.Error("SecurityException:" + ex.ToString());
}
}
//TODO:将读取的字节转换成字符串
c.Shutdown(SocketShutdown.Both);
c.Close();
try {
logger.info("建立新的连接:[ " + socket.getRemoteSocketAddress() + "]...");
BufferedReader br = getReader(socket);
PrintWriter pw = getWriter(socket);
String msg = null;
while ((msg = br.readLine()) != null) {
logger.info("客户端"+socket.getRemoteSocketAddress()+"请求通讯开始...");
logger.debug("请求:"+msg);
String msgrtn = new SocketMsgProvider(msg).dealMsg().toString();
logger.debug("请求返回:"+msgrtn);
logger.info("客户端"+socket.getRemoteSocketAddress()+"请求处理完成!");
pw.println(msgrtn);
}
br.close();
pw.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (socket != null) socket.close();
} catch (IOException e) {
e.printStackTrace();
}
logger.info("连接:[ " + socket.getRemoteSocketAddress() +"]关闭成功,线程退出!");
}
private PrintWriter getWriter(Socket socket) throws IOException {
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut, true);
}