服务器代码:
#include
#include
#include
#include
#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
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
}
while(!strstr(buf, "exit"));
WSACleanup();
}
客户端代码:
#include
#include
#include
#include
#pragma comment(lib, "wsock32.lib")
SOCKET sck;
void listen_proc(void * pdummy)
{
char buf[256]; int r = 0;
for(;;)
{
memset(buf, 0, 256);
r = recv(sck , buf, 256, 0);
if (r
printf("收到数据:%s\n", buf);
}
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");
/*Connet()*/
hostent *phost=gethostbyname("我的域名");
in_addr addr;
char* ip;
for(int i=0;;i++)
{
char *p=phost->h_addr_list[i];
if(p==NULL)
break;
memcpy(&addr.S_un.S_addr,p,phost->h_length);
ip = inet_ntoa(addr);
}
struct sockaddr_in client;
client.sin_family = AF_INET; //设置版本
client.sin_port = htons(10000); //设置端口号
client.sin_addr.S_un.S_addr = inet_addr(ip); //设置IP地址
//client.sin_addr.S_un.S_addr = inet_addr("192.168.1.22"); //设置IP地址
if(connect(sck, (struct sockaddr *)&client, sizeof(sockaddr)))
{
printf("服务器连接失败!\n");
exit(0);
}
printf("服务器连接成功...\n");
/*Recv()*/
printf("开始接收信息...\n");
_beginthread(&listen_proc, 0, 0);
/*Send()*/
char buf[256];
int s;
do
{
memset(buf, 0, 256);
gets(buf);
s = send (sck, (char *)&buf, sizeof(buf),0);
if ( s
}
while(!strstr(buf, "exit"));
WSACleanup();
}