- 浏览: 1525110 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
1、Socket服务器端:
Socket服务器端流程如下:加载套接字->创建监听的套接字->绑定套接字->监听套接字->处理客户端相关请求。
下面是孙鑫VC详解里面的服务器端的例子:
C++代码
- #include <Winsock2.h>
- #include <stdio.h>
- void main()
- {
- //加载套接字
- WORD wVersionRequested;
- WSADATA wsaData;
- int err;
- wVersionRequested=MAKEWORD(1,1);
- err=WSAStartup(wVersionRequested,&wsaData);
- if (err!=0)
- {
- return ;
- }
- if (LOBYTE(wsaData.wVersion)!=1||
- HIBYTE(wsaData.wVersion)!=1)
- {
- WSACleanup();
- return ;
- }
- //创建监听的套接字
- SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
- SOCKADDR_IN addrSrv;
- addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序
- addrSrv.sin_family=AF_INET;
- addrSrv.sin_port=htons(6000);
- //绑定套接字
- bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof (SOCKADDR));
- //将套接字设置为监听模式,准备接受用户请求
- listen(sockSrv,5);
- SOCKADDR_IN addrClient;
- int len= sizeof (SOCKADDR);
- printf("%s\n" , "welcome,the serve is started..." );
- while (1)
- {
- //等待用户请求到来
- SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
- char sendBuf[100];
- sprintf(sendBuf,"welcome %s to http://unblue2008.iteye.com" ,inet_ntoa(addrClient.sin_addr));
- //发送数据
- send(sockConn,sendBuf,100,0);
- char revBuf[100];
- //接收数据
- recv(sockConn,revBuf,100,0);
- //打印接受数据
- printf("%s\n" ,revBuf);
- //关闭套接字
- closesocket(sockConn);
- }
- }
#include <Winsock2.h> #include <stdio.h> void main() { //加载套接字 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested=MAKEWORD(1,1); err=WSAStartup(wVersionRequested,&wsaData); if (err!=0) { return; } if (LOBYTE(wsaData.wVersion)!=1|| HIBYTE(wsaData.wVersion)!=1) { WSACleanup(); return; } //创建监听的套接字 SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); //绑定套接字 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //将套接字设置为监听模式,准备接受用户请求 listen(sockSrv,5); SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR); printf("%s\n","welcome,the serve is started..."); while (1) { //等待用户请求到来 SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); char sendBuf[100]; sprintf(sendBuf,"welcome %s to http://unblue2008.iteye.com",inet_ntoa(addrClient.sin_addr)); //发送数据 send(sockConn,sendBuf,100,0); char revBuf[100]; //接收数据 recv(sockConn,revBuf,100,0); //打印接受数据 printf("%s\n",revBuf); //关闭套接字 closesocket(sockConn); } }
注意:需要包含头文件<Winsock2.h>,并且在工程设置的link里面加上ws32_2.dll
如果在VC中还有一个简单的加载套接字的方法:
C++代码
- if (!AfxSocketInit())
- {
- AfxMessageBox("套接字加载失败!" );
- return false ;
- }
if (!AfxSocketInit()) { AfxMessageBox("套接字加载失败!"); return false; }
这个不需要包含上面注里面的头文件和ws2_32.lib库就可以实现加载套接字。
2、Socket客户端:
Socket客户端同样需要先加载套接字,然后创建套接字,不过之后不用绑定和监听了,而是直接连接服务器,发送相关请求。
同样贴出孙鑫VC详解里面的客户端的例子:(不是我偷懒,是人家实在写的太好,无法超越
)
C++代码
- #include <Winsock2.h>
- #include <stdio.h>
- void main()
- {
- //加载套接字
- WORD wVersionRequested;
- WSADATA wsaData;
- int err;
- wVersionRequested=MAKEWORD(1,1);
- err=WSAStartup(wVersionRequested,&wsaData);
- if (err!=0)
- {
- return ;
- }
- if (LOBYTE(wsaData.wVersion)!=1||
- HIBYTE(wsaData.wVersion)!=1)
- {
- WSACleanup();
- return ;
- }
- //创建套接字
- SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
- SOCKADDR_IN addrSrv;
- addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1" ); //把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序
- addrSrv.sin_family=AF_INET;
- addrSrv.sin_port=htons(6000);
- //向服务器发送请求
- connect(sockClient,(SOCKADDR*)&addrSrv,sizeof (SOCKADDR));
- //接受数据
- char recBuf[100];
- recv(sockClient,recBuf,100,0);
- printf("%s\n" ,recBuf);
- //发送数据
- send(sockClient,"this is 扈修非" ,strlen( "this is 扈修非" )+1,0);
- //关闭套接字
- closesocket(sockClient);
- WSACleanup();
- }
#include <Winsock2.h> #include <stdio.h> void main() { //加载套接字 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested=MAKEWORD(1,1); err=WSAStartup(wVersionRequested,&wsaData); if (err!=0) { return; } if (LOBYTE(wsaData.wVersion)!=1|| HIBYTE(wsaData.wVersion)!=1) { WSACleanup(); return; } //创建套接字 SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); //向服务器发送请求 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //接受数据 char recBuf[100]; recv(sockClient,recBuf,100,0); printf("%s\n",recBuf); //发送数据 send(sockClient,"this is 扈修非",strlen("this is 扈修非")+1,0); //关闭套接字 closesocket(sockClient); WSACleanup(); }
需要加载的头文件和库同上
发表评论
-
vc++ 多线程编程 SOCKET通信
2009-12-12 17:45 8944vc++ 多线程编程 SOCKET通信 #includ ... -
vc++多线程=并行计算的简单例子
2009-12-12 17:44 7473随着信息时代的到来,需要处理的信息量越来越庞大,需要解决的 ... -
VC++多线程编写示例
2009-12-12 17:43 1715吃苹果问题 首先,父亲放一个苹果在盘,儿子马上取苹果这件 ... -
浅谈Windows编程中的句柄和对象
2009-12-12 17:42 1944系统使用对象和句柄来控制对于系统资源(文件、线程等)的访问主 ... -
VC++多线程编程实例讲解
2009-12-12 17:41 4530VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺 ... -
VC++线程通信
2009-12-12 17:39 1564这是我现在使用的一种线程通信方式的代码片段,两个线程之间 ... -
vc++多线程起步
2009-12-12 17:38 3257c++多线程起步 2009-08-07 10:37 ...
相关推荐
**实验一: SOCKET编程实验** 在计算机网络领域,Socket编程是一种基本的通信方式,它允许两个应用程序通过网络进行数据交换。本实验旨在帮助学生深入理解SOCKET编程的概念、原理及其实现过程,以便于掌握网络通信...
C#raw Socket编程 C#raw Socket编程是指使用C#语言实现原始套接字(Raw Socket)的编程技术。原始套接字是一种网络编程接口,允许开发者在应用层实现网络封包监视和控制。 Windows Sockets 是一种网络编程接口,...
Socket编程是网络编程的基础,主要用于实现两个网络节点之间的通信。在这个实验报告中,我们主要探讨了如何使用Java的Socket和ServerSocket类进行TCP协议的客户端和服务器端编程。 实验目标是掌握Socket编程的基本...
【标题】:“华中科技大学-计算机通信与网络(Socket编程)-内含源文件和说明书.zip” 这个资源主要涵盖了华中科技大学计算机通信与网络课程中的Socket编程部分,它包括了学习资料、源代码示例以及相关说明文档。...
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...