简单的Scoket通信怎么扩展到任意两台主机上
本帖最后由 I_will_back 于 2013-07-12 11:54:23 编辑
server端
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "WS2_32")
int main()
{
WSADATA wsadata;
if (WSAStartup(MAKEWORD(2, 2), &wsadata) != 0)
printf("初始化失败\n");
SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
if (s == INVALID_SOCKET)
printf("套接字初始化失败\n");
printf("服务器已启动....\n");
intiPort = 6000;
//char buf[] = "这是一条发给客户端的消息";
char buf[1024];
memset(buf, 0, 1024);
//服务器套接字
sockaddr_in ser;
ser.sin_family = AF_INET;
ser.sin_port = htons(iPort);
ser.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(s, (SOCKADDR*)&ser, sizeof(sockaddr_in)) == SOCKET_ERROR)
{
printf("绑定失败\n");
}
if (listen(s, 2) == SOCKET_ERROR)
{
printf("监听失败\n");
}
//接受客户端请求
sockaddr_in cli;
int iLen = sizeof(cli);
SOCKET sAccept = accept(s, (SOCKADDR*)&cli, &iLen);
if ( sAccept == INVALID_SOCKET)
{
printf("接受失败\n");
}
printf("已连接\n");
while (1)
{
scanf("%s", buf);
if (send(sAccept, buf, sizeof(buf), 0) == SOCKET_ERROR)
break;
}
closesocket(s);
closesocket(sAccept);
WSACleanup();
system("pause");
return 0;
}
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "WS2_32")
int main()
{
WSADATA wsadata;
if (WSAStartup(MAKEWORD(2, 2), &wsadata) != 0)
{
printf("初始化失败\n");
}
SOCKET client;
sockaddr_in ser;
int iPort = 6000;
char buf[512];
memset(buf, 0, 512);
client = socket(AF_INET, SOCK_STREAM, 0);
if (client == INVALID_SOCKET)
{
printf("套接字初始化失败\n");
}
ser.sin_family = AF_INET;
ser.sin_port = htons(iPort);
ser.sin_addr.s_addr = inet_addr("127.0.0.1");
int len = connect(client, (sockaddr*)&ser, sizeof(ser));
if (len == SOCKET_ERROR)
{
printf("连接服务器失败\n");
}
while (1)
{
if (recv(client, buf, sizeof(buf), 0) == SOCKET_ERROR)
break;
printf("%s\n", buf);
}
closesocket(client);
WSACleanup();
system("pause");
return 0;
}