.. ..
一、实验目的与实验要求
1、实验目的
使用c++6.0或c#,基于SOCKET开发一个简单的C/S文本传输程序 2、实验要求
客户端能够发送由标准输入得到的文本,服务器能够接收并将其显示在标准输出上。
二、实验设备(环境)及要求
计算机系统:windows 8.1 软件环境:vc++6.0
三、实验容与步骤
1、实验1 (1)实验容
1、服务器端先初始化socket,并绑定端口,对端口进行监听,等待客户端的连接。
2、客户端初始化socket,连接服务器,并发送数据给服务器。 3、服务器接受客户端的数据,并返回回复信息。
... . .
.. ..
(2)主要步骤 工作原理:
代码: 服务器
#include
#pragma comment(lib,\int main() {
//初始化
WORD sockVersion = MAKEWORD(2, 2); WSADATA wsaData;
if (WSAStartup(sockVersion, &wsaData) != 0) {
return 0; }
//创建套接字
SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (slisten == INVALID_SOCKET) {
... . .
.. ..
printf(\ return 0; }
//绑定IP和端口 sockaddr_in sin;
sin.sin_family = AF_INET; sin.sin_port = htons(55555);
sin.sin_addr.S_un.S_addr = INADDR_ANY;
if (bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR) {
printf(\ return 0; }
//开始监听
if (listen(slisten, 5) == SOCKET_ERROR) {
printf(\ return 0; }
SOCKET Client;
sockaddr_in remoteAddr;
int nAddrlen = sizeof(remoteAddr); char revData[255];
printf(\ 等待连接...\\n\
Client = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen); if (Client == INVALID_SOCKET) {
printf(\ return 0; }
printf(\接受到一个连接:%s \\r\\n\ //接收数据 while (1) {
int ret = recv(Client, revData, 255, 0); if (ret > 0) {
revData[ret] = 0x00;
printf(\来自客户端的信息:\ printf(revData); printf(\
... . .
.. ..
}
}
//发送确认信息
char * sendData = \发送成功。\\n\\n\
send(Client, sendData, strlen(sendData), 0); }
closesocket(slisten); WSACleanup(); return 0;
客户端
#include
#pragma comment(lib,\int main() {
WORD sockVersion = MAKEWORD(2, 2); WSADATA data;
if (WSAStartup(sockVersion, &data) != 0)
{
return 0; }
SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); {
printf(\ return 0; }
sockaddr_in serAddr;
if (sclient == INVALID_SOCKET)
serAddr.sin_family = AF_INET; serAddr.sin_port = htons(55555);
serAddr.sin_addr.S_un.S_addr = inet_addr(\
if (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
printf(\ closesocket(sclient); return 0; }
//发送和接收
printf(\连接成功\\n\
while(1) {
char *sendData, *q;
sendData = (char*)malloc(sizeof(char) * 20); q = sendData;
... . .
.. ..
}
}
printf(\请输入需要传输的信息:\ scanf(\
send(sclient, sendData, strlen(sendData), 0); char recData[500];
int ret = recv(sclient, recData, 500, 0); if (ret > 0) { }
recData[ret] = 0x00; printf(recData);
closesocket(sclient); WSACleanup();
return 0;
四:实验结果与分析
打开服务器,等待连接:
客服端连接后:
接收到客户端信息后等待再次接收信息
... . .