3,881
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <winsock2.h>
#include <stdlib.h>
#include <process.h>
#pragma comment(lib, "wsock32.lib")
SOCKET sck,consck[10];
int cur = 0;
struct sockaddr_in temp[10];
void listen_proc(void * pdummy)
{
int index = cur;
cur++;
char buf[256]; int r = 0;
for(;;)
{
memset(buf, 0, 256);
r = recv(consck[index], buf, 256, 0);
if (r < 1) break;
printf("收到%s的数据:%s\n", inet_ntoa(temp[index].sin_addr ), buf);
}
return;
}
void accept_proc(void * pdummy)
{
for(int i = 0;1;i++)
{
int length = sizeof(temp[i]);
consck[i] = accept(sck, (struct sockaddr *)&temp[i], &length);
printf("%s接收成功...\n", inet_ntoa(temp[i].sin_addr ));
_beginthread(&listen_proc, 0, 0);
}
return;
}
void main()
{
/*Socket()*/
WSAData w;
memset(&w, 0, sizeof(w));
if(WSAStartup(0x0101, &w)) //启动Socket
{
printf("启动Socket失败!");
exit(0);
}
printf("启动Socket成功...\n");
sck = socket(AF_INET, SOCK_STREAM, 0); //创建Socket
printf("创建Socket成功...\n");
/*Bind(),绑定ip地址和端口号*/
struct sockaddr_in my_addr;
memset(&my_addr, 0, sizeof(my_addr));
my_addr.sin_family = AF_INET; //设置版本
my_addr.sin_port = htons(10000); //设置端口号
my_addr.sin_addr.S_un.S_addr = INADDR_ANY; //设置服务器IP地址
//my_addr.sin_addr.S_un.S_addr = inet_addr(ip); //设置服务器IP地址
if(bind(sck, (sockaddr *)&my_addr, sizeof(my_addr)) == SOCKET_ERROR)
{
printf("绑定Scoket失败!\n");
exit(0);
}
printf("绑定Socket成功...\n");
/*Listen()*/
listen(sck, 5);
printf("服务器监听状态...\n");
/*Accept()*/
_beginthread(&accept_proc, 0, 0);
/*Send()*/
char buf[256];
int s;
do
{
memset(buf, 0, 256);
gets(buf);
s = send (consck[0], (char *)&buf, sizeof(buf),0);
if ( s < 1) break;
}
while(!strstr(buf, "exit"));
WSACleanup();
}