`
- 浏览:
1153244 次
- 性别:
- 来自:
北京
-
简易socket客户端和多线程服务器实现
下午时间匆忙写的,尽量简化实现。
客户端:
packagecom.XiongYi.client;
importjava.io.*;
importjava.net.*;
publicclassClient...{
publicstaticvoidmain(String[]args)throwsIOException...{
finalStringServer_IP="localhost";
finalintServer_Port=1986;
Socketsocket=newSocket(Server_IP,Server_Port);
try...{
System.out.println("ClientStart...");
System.out.println("socket="+socket);
socket.setKeepAlive(true);
PrintWriterout=newPrintWriter(
newBufferedWriter
(newOutputStreamWriter
(socket.getOutputStream())),true);
InputStreamnetIn=socket.getInputStream();
BufferedReaderbufferedReader=newBufferedReader(
newInputStreamReader(System.in));
System.out.print("请输入请求:");
StringhttpString=bufferedReader.readLine();
System.out.println(httpString);
intstick=httpString.indexOf("//");
//找到“HTTP://localhost:80/Tomcat/test.html”中“//”的位置
if(stick!=-1)
httpString=httpString.substring(stick+2);
stick=httpString.indexOf("/");
httpString=httpString.substring(stick);
System.out.println(httpString);
out.println("GET"+httpString+"HTTP/1.1");
out.println("Accept:*/*");
out.println("Accept-Language:zh-cn");
out.println("UA-CPU:x86");
out.println("Accept-Encoding:gzip,deflate");
out.println("User-Agent:R.C.");
out.println("Host:localhost:"+Server_Port);
out.println("Connection:Keep-Alive");
out.flush();
//这里不能用out.close,否则socket也会被关闭!
System.out.println("Readingthepage... ");
bytebuf[]=newbyte[1024];
intnum=0;
while((num=netIn.read(buf,0,buf.length))!=-1)...{
System.out.print(newString(buf,0,num,"GBK"));
}
bufferedReader.close();
netIn.close();
out.close();
}
finally...{
System.out.println("closing..");
socket.close();
}
}
}
多线程服务端:
packagecom.XiongYi.server;
importjava.io.*;
importjava.net.*;
publicclassServerextendsThread...{
intserver_Port;
publicServer(intsp)...{
server_Port=sp;
}
publicvoidrun()...{
System.out.println("Aserverthreadisrunning...");
try...{
ServerSocketserverSocket=newServerSocket(server_Port);
System.out.println("ServerSocket="+serverSocket);
Socketsocket=serverSocket.accept();
System.out.println("Serverstart...");
System.out.println("Connectionaccepted,thesocketis"+socket);
BufferedReaderin=newBufferedReader(newInputStreamReader(socket
.getInputStream()));
PrintWriterout=newPrintWriter(newBufferedWriter(
newOutputStreamWriter(socket.getOutputStream())),true);
out.println("Hi,I'maserver...");
System.out.println("Readingtherequest...");
StringoutS="Thehttprequest:";
while(outS!=null)...{
System.out.println(outS=in.readLine());
}
out.close();
in.close();
socket.close();
serverSocket.close();
System.out.println("closing...");
}catch(IOExceptione)...{
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args)...{
inti=0;
while(i<10)...{
//最多启用10线程
newServer(1986+i).run();
}
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
编写简单的多线程 web服务器 实现过程: 该实验我做的是一个聊天系统,实现的功能是: 服务端可以任意指定一个端口号建立服务器,等待的客户的连接,若有客户连接上,则有相应的提示,断开连接也有相应的提示,此外...
多线程处理多个客户端的链接,比较简单Socket编程源代码
视线多线程聊天, 是学习 socket 和 线程的 好材料
为实现多用户聊天,采用了服务器端分发线程处理,主线程阻塞接受客户端socket, 每接收一个socket连接就分发一个线程处理,通过全局变量保存所有客户socket 连接,在每个处理线程中通过客户socket 连接池中每个客户...
实现多人通信,使用GTK编写界面,采用socket网络编程,和多线程实现客户端之间的通信,包含服务器和客户端代码,可以直接运行.
用j2se写的一个简单的聊天系统,写了客户端和服务器。用到了socket,流读写技术,服务器端采用了多线程等技术。基本上涵盖了j2se中所有学到的技术,非常适合学习了j2se的初学者练习使用。
这是一个利用 多线程,SOCKET,I/O 简易制作的服务器与客户端之间的通讯实例,结构清晰明朗,非常适合初学者研究学习之用。
通过MFC,利用SOCKET TCP实现聊天的例子 分为服务器和客户端 客户端连接服务器端,开启聊天线程 编译环境为VC6
基于‘多线程服务器端设计(吴静).doc’为基础修改而来,修复潜在的bug。使用vs2012编译,包含客户端以及服务器端代码,demo包含完整的api使用流程,并包含简易的应答交互环节。服务器支持多线程并发处理,工程运行...
1. 使用 socket 实现服务器和浏览器客户端的通信; 2. 用 epoll 事件检测技术实现 IO 多路复用,提高运行效率; 3. 采用模拟 Proacto r的事件处理模式,利用线程池实现多线程机制,实现高并发通信,减少频繁创建和...
这是基于TCP协议网上聊天程序。主要分为两个部分,一部分是服务器,一部分是客户端。两者结合,实现了基本的局域网多人聊天功能。...为了实现即时通信,引入了多线程技术,从而实现了通信的即时性和并发性。
特点:多线程机制、线程池、客户端图形化界面、自定义协议tcp和udp。 由客户端和服务器端组成。服务器是在老师所给的服务器程序基础改编而成,主要是加入了进程池技术,从而把复杂的进程管理交给进程池去处理,另外...
本代码QT平台下开发的简易聊天室,运用到了QT下的Tcp Socket编程技术和多线程,代码分为服务器端和客户端两部分,简单易懂。
二 技术实现 1 所用关键技术: 1) MIDAS:主要是维护服务器信息列表 2) SOCKET:主要实现数据的传输 3) 多线程技术,SOCKS代理技术等 2 语言:DELPHI三 现在功能 1 客户端功能: 查找提供NC服务的服务器 消息收发...
自己编写的简单的java多人聊天室,只为复习java...大致思路为每连接一个客户端,服务器为其新建一个线程与端口连接通信。基本功能没有问题,但是没有再多的细致的测试,有兴趣学习java线程、网络和swing的可以看看。
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
示例描述:介绍.NET多线程实现。 UseTrhead 演示普通线程的使用实例 UseParaThread 演示带参数线程的使用实例 UseLock 演示使用lock语句同步数据实例 UseMonitor 演示使用Monitor类同步数据实例 UseMutex 演示...