`
- 浏览:
1163224 次
- 性别:
- 来自:
北京
-
简易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
相关推荐
- 服务器和客户端在指定文件路径时,需要考虑到各自的文件系统结构,可能需要进行相对路径或绝对路径的转换。 8. **关闭资源**: - 传输完成后,确保正确关闭所有打开的流和Socket,避免资源泄露。 9. **阻塞与...
2. **客户端多线程**:在客户端,多线程可以用于同时处理多个不同的任务,例如在一个线程中发送数据,另一个线程接收数据。这可以确保发送和接收操作不会相互阻塞,提高程序的响应性。 下面是一个简单的Java Socket...
总的来说,"SOCKET TCP 文件传输 客户端 服务器端 client svever"这个项目旨在教授如何利用TCP协议实现文件的可靠传输,这对于理解网络编程和提升实际应用技能非常有价值。通过深入学习和实践,开发者可以更好地掌握...
在这个项目中,我们使用C#编程语言创建了一个简单的FTP服务器和客户端,它们是通过UDP(User Datagram Protocol)而不是常用的TCP(Transmission Control Protocol)进行通信的。 首先,让我们了解UDP和TCP的区别。...
本文将深入探讨基于Socket编程的客户端和服务器端程序,特别是在TCP和UDP协议下的应用。 首先,Socket可以理解为网络上的两个应用程序之间的通信端点。它提供了一种在不同主机之间交换数据的机制,是网络编程的基础...
3. **并发处理**:由于多线程的特性,服务器需要能够并发处理多个客户端的请求。这可能涉及到线程同步机制,如互斥量(mutex)、信号量或事件对象,以避免资源竞争和数据不一致。 4. **网络协议**:TCP/IP协议族是...
在Linux系统中,C语言与TCP Socket编程相结合可以创建出多线程的简易聊天室。这个项目主要涉及以下几个核心知识点: 1. **TCP Socket编程**: - TCP(Transmission Control Protocol)是一种面向连接的、可靠的...
【简易聊天室 分客户端 和服务器】是一个典型的网络通信项目,主要使用了C++语言,并结合MFC(Microsoft Foundation Classes)库、Vc++编译器以及多线程和socket技术来实现。该项目提供了客户端和服务器端的源代码,...
在本文中,我们将深入探讨如何使用Python的套接字库...`scrapy.py`文件负责服务器端的多线程监听和数据处理,而`client.py`文件则实现了客户端的连接、发送和接收功能。这种设计模式在实际的网络编程中有着广泛的应用。
2. **网络编程**: Java的`Socket`和`ServerSocket`类用于实现客户端和服务器之间的TCP连接,保证数据的可靠传输。 3. **多线程**: 在客户端,为了实现异步通信,通常会为每个连接创建一个新的线程,这样可以保证...
在Android平台上实现简易服务器和客户端是一项常见的编程任务,主要用于设备之间的通信或数据交换。这个项目是使用Eclipse IDE编写的,它包含了一个简单的服务器端应用和一个客户端应用,两者通过Socket进行连接。...
- **GUI界面设计**:客户端的实现可能会使用JavaFX或Swing等库来创建用户界面,学习如何设计和实现交互式的用户界面。 - **多线程编程**:服务器端可能需要处理多个并发连接,因此多线程编程是必不可少的,理解线程...
Socket编程是计算机网络编程中的重要组成部分,主要用于实现进程间的通信。在本实例中,我们将...通过学习和实践这个实例,你可以掌握如何使用Socket实现基本的客户端-服务器通信,为后续的网络编程打下坚实的基础。
这个压缩包文件“Android应用源码之简易微信客户端和服务器源码.zip”包含了构建一个简单微信客户端和服务器端应用的源代码。通过分析这些源代码,我们可以深入理解Android应用程序开发和网络通信的基本原理。 首先...
一旦有连接请求到来,服务器就会创建一个新的Socket实例来处理这个连接,而这个过程可以通过多线程实现,以同时处理多个客户端请求。 对于GET和POST请求,它们是HTTP协议中最常见的两种请求方法。GET用于请求获取...
通过这些类的协同工作,Java多线程和Socket技术构建了一个简单的聊天室环境,实现了用户之间的实时交流。开发者可以进一步优化这个应用,比如增加身份验证、消息加密、错误处理等功能,使其更加完善和安全。 总之,...
总之,“简易Socket聊天工具”通过Socket实现了基本的网络聊天功能,其核心在于使用Socket连接,配合输入输出流进行数据交换,以及可能的多线程处理以支持多个客户端同时在线聊天。对于学习网络编程和理解Socket通信...
标题中的“使用Java编写的一个简易多线程HTTP服务器”指的是一个使用Java编程语言实现的简单HTTP服务器,它利用了多线程技术来处理客户端的HTTP请求。在Java中,可以使用Socket编程接口来建立TCP连接,进而实现HTTP...
在“简易Socket通讯工具”项目中,可能包含了客户端和服务器两部分。客户端用于发起连接并发送数据,服务器则负责监听连接并接收数据。文件列表中的"简易Socket通讯工具"可能包含以下组件: - 客户端代码:实现...
一旦连接建立,服务器和客户端就可以通过Socket进行数据的双向传输,也就是聊天信息的发送和接收。 其次,`Thread`类在Java中用于实现多线程。在这个聊天室项目中,每个客户端的连接都会被分配到一个新的线程中处理...