`

简易socket客户端和多线程服务器实现

阅读更多

简易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();
}


}

}

分享到:
评论

相关推荐

    基于socket的多线程QQ聊天系统(代码+问题分析+解决方案)

    编写简单的多线程 web服务器 实现过程: 该实验我做的是一个聊天系统,实现的功能是: 服务端可以任意指定一个端口号建立服务器,等待的客户的连接,若有客户连接上,则有相应的提示,断开连接也有相应的提示,此外...

    简单的TCP多线程服务器

    多线程处理多个客户端的链接,比较简单Socket编程源代码

    简易聊天室 分客户端 和服务器

    视线多线程聊天, 是学习 socket 和 线程的 好材料

    C++用win socket api实现的简单的聊天室程序

    为实现多用户聊天,采用了服务器端分发线程处理,主线程阻塞接受客户端socket, 每接收一个socket连接就分发一个线程处理,通过全局变量保存所有客户socket 连接,在每个处理线程中通过客户socket 连接池中每个客户...

    GTK多线程聊天工具

    实现多人通信,使用GTK编写界面,采用socket网络编程,和多线程实现客户端之间的通信,包含服务器和客户端代码,可以直接运行.

    java写的一个简单基于tcp协议的多用户聊天系统

    用j2se写的一个简单的聊天系统,写了客户端和服务器。用到了socket,流读写技术,服务器端采用了多线程等技术。基本上涵盖了j2se中所有学到的技术,非常适合学习了j2se的初学者练习使用。

    网络服务器与客户端之间的通讯实例

    这是一个利用 多线程,SOCKET,I/O 简易制作的服务器与客户端之间的通讯实例,结构清晰明朗,非常适合初学者研究学习之用。

    MFC 基于SOCKET/TCP简单聊天窗口

    通过MFC,利用SOCKET TCP实现聊天的例子 分为服务器和客户端 客户端连接服务器端,开启聊天线程 编译环境为VC6

    socket DEMO.rar

    基于‘多线程服务器端设计(吴静).doc’为基础修改而来,修复潜在的bug。使用vs2012编译,包含客户端以及服务器端代码,demo包含完整的api使用流程,并包含简易的应答交互环节。服务器支持多线程并发处理,工程运行...

    (牛客网C++课程)Linux 高并发Web服务器项目实战(带定时检测代码)

    1. 使用 socket 实现服务器和浏览器客户端的通信; 2. 用 epoll 事件检测技术实现 IO 多路复用,提高运行效率; 3. 采用模拟 Proacto r的事件处理模式,利用线程池实现多线程机制,实现高并发通信,减少频繁创建和...

    基于TCP/IP 的Java 简易多人聊天器

    这是基于TCP协议网上聊天程序。主要分为两个部分,一部分是服务器,一部分是客户端。两者结合,实现了基本的局域网多人聊天功能。...为了实现即时通信,引入了多线程技术,从而实现了通信的即时性和并发性。

    基于java简易ICQ

    特点:多线程机制、线程池、客户端图形化界面、自定义协议tcp和udp。 由客户端和服务器端组成。服务器是在老师所给的服务器程序基础改编而成,主要是加入了进程池技术,从而把复杂的进程管理交给进程池去处理,另外...

    QT下基于TCP的聊天室实现

    本代码QT平台下开发的简易聊天室,运用到了QT下的Tcp Socket编程技术和多线程,代码分为服务器端和客户端两部分,简单易懂。

    网络NC

    二 技术实现 1 所用关键技术: 1) MIDAS:主要是维护服务器信息列表 2) SOCKET:主要实现数据的传输 3) 多线程技术,SOCKS代理技术等 2 语言:DELPHI三 现在功能 1 客户端功能: 查找提供NC服务的服务器 消息收发...

    java多人聊天室(简易版)

    自己编写的简单的java多人聊天室,只为复习java...大致思路为每连接一个客户端,服务器为其新建一个线程与端口连接通信。基本功能没有问题,但是没有再多的细致的测试,有兴趣学习java线程、网络和swing的可以看看。

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    C# 3.0完全自学宝典 (F)

    示例描述:介绍.NET多线程实现。 UseTrhead 演示普通线程的使用实例 UseParaThread 演示带参数线程的使用实例 UseLock 演示使用lock语句同步数据实例 UseMonitor 演示使用Monitor类同步数据实例 UseMutex 演示...

Global site tag (gtag.js) - Google Analytics