`

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


}

}

分享到:
评论

相关推荐

    Java Socket PC端传输文件简易服务器客户端

    - 服务器和客户端在指定文件路径时,需要考虑到各自的文件系统结构,可能需要进行相对路径或绝对路径的转换。 8. **关闭资源**: - 传输完成后,确保正确关闭所有打开的流和Socket,避免资源泄露。 9. **阻塞与...

    java socket 多线程 简易实现

    2. **客户端多线程**:在客户端,多线程可以用于同时处理多个不同的任务,例如在一个线程中发送数据,另一个线程接收数据。这可以确保发送和接收操作不会相互阻塞,提高程序的响应性。 下面是一个简单的Java Socket...

    SOCKET TCP 文件传输 客户端 服务器端 client svever

    总的来说,"SOCKET TCP 文件传输 客户端 服务器端 client svever"这个项目旨在教授如何利用TCP协议实现文件的可靠传输,这对于理解网络编程和提升实际应用技能非常有价值。通过深入学习和实践,开发者可以更好地掌握...

    用Socket写的简易FTP服务器和客户端

    在这个项目中,我们使用C#编程语言创建了一个简单的FTP服务器和客户端,它们是通过UDP(User Datagram Protocol)而不是常用的TCP(Transmission Control Protocol)进行通信的。 首先,让我们了解UDP和TCP的区别。...

    基于socket编程的客户端和服务器端程序

    本文将深入探讨基于Socket编程的客户端和服务器端程序,特别是在TCP和UDP协议下的应用。 首先,Socket可以理解为网络上的两个应用程序之间的通信端点。它提供了一种在不同主机之间交换数据的机制,是网络编程的基础...

    C++基于socket的多线程聊天程序

    3. **并发处理**:由于多线程的特性,服务器需要能够并发处理多个客户端的请求。这可能涉及到线程同步机制,如互斥量(mutex)、信号量或事件对象,以避免资源竞争和数据不一致。 4. **网络协议**:TCP/IP协议族是...

    linux c tcp socket 多线程简易聊天室

    在Linux系统中,C语言与TCP Socket编程相结合可以创建出多线程的简易聊天室。这个项目主要涉及以下几个核心知识点: 1. **TCP Socket编程**: - TCP(Transmission Control Protocol)是一种面向连接的、可靠的...

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

    【简易聊天室 分客户端 和服务器】是一个典型的网络通信项目,主要使用了C++语言,并结合MFC(Microsoft Foundation Classes)库、Vc++编译器以及多线程和socket技术来实现。该项目提供了客户端和服务器端的源代码,...

    用Python套接字实现服务器和客户端的一对多通信(简易的聊天程序)

    在本文中,我们将深入探讨如何使用Python的套接字库...`scrapy.py`文件负责服务器端的多线程监听和数据处理,而`client.py`文件则实现了客户端的连接、发送和接收功能。这种设计模式在实际的网络编程中有着广泛的应用。

    java实现的简易qq客户端+服务器端

    2. **网络编程**: Java的`Socket`和`ServerSocket`类用于实现客户端和服务器之间的TCP连接,保证数据的可靠传输。 3. **多线程**: 在客户端,为了实现异步通信,通常会为每个连接创建一个新的线程,这样可以保证...

    简易服务器和客户端

    在Android平台上实现简易服务器和客户端是一项常见的编程任务,主要用于设备之间的通信或数据交换。这个项目是使用Eclipse IDE编写的,它包含了一个简单的服务器端应用和一个客户端应用,两者通过Socket进行连接。...

    简易微信客户端和服务器源码.zip

    - **GUI界面设计**:客户端的实现可能会使用JavaFX或Swing等库来创建用户界面,学习如何设计和实现交互式的用户界面。 - **多线程编程**:服务器端可能需要处理多个并发连接,因此多线程编程是必不可少的,理解线程...

    socket 客户端及服务端编程经典实例---qq简易源码

    Socket编程是计算机网络编程中的重要组成部分,主要用于实现进程间的通信。在本实例中,我们将...通过学习和实践这个实例,你可以掌握如何使用Socket实现基本的客户端-服务器通信,为后续的网络编程打下坚实的基础。

    Android应用源码之简易微信客户端和服务器源码.zip

    这个压缩包文件“Android应用源码之简易微信客户端和服务器源码.zip”包含了构建一个简单微信客户端和服务器端应用的源代码。通过分析这些源代码,我们可以深入理解Android应用程序开发和网络通信的基本原理。 首先...

    java(简易)多线程HTTP服务器

    一旦有连接请求到来,服务器就会创建一个新的Socket实例来处理这个连接,而这个过程可以通过多线程实现,以同时处理多个客户端请求。 对于GET和POST请求,它们是HTTP协议中最常见的两种请求方法。GET用于请求获取...

    java多线程基于socket的简易聊天室源代码

    通过这些类的协同工作,Java多线程和Socket技术构建了一个简单的聊天室环境,实现了用户之间的实时交流。开发者可以进一步优化这个应用,比如增加身份验证、消息加密、错误处理等功能,使其更加完善和安全。 总之,...

    简易Socket聊天工具

    总之,“简易Socket聊天工具”通过Socket实现了基本的网络聊天功能,其核心在于使用Socket连接,配合输入输出流进行数据交换,以及可能的多线程处理以支持多个客户端同时在线聊天。对于学习网络编程和理解Socket通信...

    使用Java编写的一个简易多线程HTTP服务器

    标题中的“使用Java编写的一个简易多线程HTTP服务器”指的是一个使用Java编程语言实现的简单HTTP服务器,它利用了多线程技术来处理客户端的HTTP请求。在Java中,可以使用Socket编程接口来建立TCP连接,进而实现HTTP...

    C#简易Socket通讯工具

    在“简易Socket通讯工具”项目中,可能包含了客户端和服务器两部分。客户端用于发起连接并发送数据,服务器则负责监听连接并接收数据。文件列表中的"简易Socket通讯工具"可能包含以下组件: - 客户端代码:实现...

    用Java Socket实现的一个多人聊天的小软件

    一旦连接建立,服务器和客户端就可以通过Socket进行数据的双向传输,也就是聊天信息的发送和接收。 其次,`Thread`类在Java中用于实现多线程。在这个聊天室项目中,每个客户端的连接都会被分配到一个新的线程中处理...

Global site tag (gtag.js) - Google Analytics