转载自:http://blog.csdn.net/neicole/article/details/7459021
一。程序运行效果图
二。程序源代码
三。程序设计相关基础知识
1.计算机网络
2.IP地址
3.协议
4.网络体系结构
5.TCP/IP体系结构与特点
6.客户机/服务器模式
7.TCP/IP特点
8.套接字的引入
9.面向 连接/无连接 的套接字的系统调用时序图/流程图
一。程序运行效果图

二。程序源代码
-
- #include <iostream>
- #include <cstdio>
- #include <Winsock2.h>
-
- using namespace std;
-
- int main()
- {
- WORD wVersionRequested;
- WSADATA wsaData;
- int err;
-
- wVersionRequested = MAKEWORD( 1, 1 );
-
- err = WSAStartup( wVersionRequested, &wsaData );
- if ( err != 0 ) {
- return -1;
- }
-
- if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) {
-
-
- WSACleanup( );
- return -1;
- }
-
-
-
-
- SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SOCKADDR_IN addrSrv;
- addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
- addrSrv.sin_family = AF_INET;
- addrSrv.sin_port = htons(6000);
-
- bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
-
-
-
- listen(sockSrv, 10);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SOCKADDR_IN addrClient;
- int len = sizeof(SOCKADDR);
-
- while(true){
- SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);
-
- char sendBuf[100];
- sprintf(sendBuf, "Welcome %s to the server program~ \nNow, let‘s start talking...\n", inet_ntoa(addrClient.sin_addr));
- send(sockConn, sendBuf, strlen(sendBuf)+1, 0);
-
- char recvBuf[100];
- recv(sockConn, recvBuf, 100, 0);
- printf("%s\n", recvBuf);
-
- char * sockConnName = "Client";
- printf("我们可以聊五句话");
- int n = 5;
- while(n--){
- printf("还剩%d次:\n", n+1);
- char recvBuf[100];
- recv(sockConn, recvBuf, 100, 0);
- printf("%s Says: %s\n", sockConnName, recvBuf);
-
- char talk[100];
- printf("Please enter what you want to say next(\"quit\"to exit):");
- gets(talk);
- send(sockConn, talk, strlen(talk)+1, 0);
- printf("\n");
- }
- printf("\nEnd talking... \n");
- closesocket(sockConn);
- }
-
- printf("\n");
- system("pause");
- return 0;
- }
-
- #include <iostream>
- #include <cstdio>
- #include <Winsock2.h>
-
- using namespace std;
-
- int main()
- {
- WORD wVersionRequested;
- WSADATA wsaData;
- int err;
-
- wVersionRequested = MAKEWORD( 1, 1 );
-
- err = WSAStartup( wVersionRequested, &wsaData );
- if ( err != 0 ) {
- return -1;
- }
-
- if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) {
-
-
- WSACleanup( );
- return -1;
- }
-
-
-
-
- SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);
-
-
-
-
-
- SOCKADDR_IN addrSrv;
- addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
- addrSrv.sin_family = AF_INET;
- addrSrv.sin_port = htons(6000);
- connect(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
-
- char recvBuf[100];
- recv(sockClient, recvBuf, 100, 0);
- printf("%s\n", recvBuf);
-
- send(sockClient, "Attention: A Client has enter...\n", strlen("Attention: A Client has enter...\n")+1, 0);
-
- printf("我们可以聊五句话");
- int n = 5;
- do{
- printf("\n还剩%d次:", n);
- char talk[100];
- printf("\nPlease enter what you want to say next(\"quit\"to exit):");
- gets(talk);
- send(sockClient, talk, strlen(talk)+1, 0);
-
- char recvBuf[100];
- recv(sockClient, recvBuf, 100, 0);
- printf("%s Says: %s\n", "Server", recvBuf);
- }while(--n);
-
- printf("End linking...\n");
- closesocket(sockClient);
- WSACleanup();
-
- printf("\n");
- system("pause");
- return 0;
- }
三。程序设计相关基础知识
1.计算机网络
2.IP地址
3.协议
4.网络体系结构

5.TCP/IP体系结构与特点

6.客户机/服务器模式

7.TCP/IP特点
8.套接字的引入

9.面向 连接/无连接 的套接字的系统调用时序图/流程图



Windows Socket 编程_ 简单的服务器/客户端程序
原文:http://www.cnblogs.com/itlqs/p/6045256.html