18,356
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <iostream.h>
#include <Winsock2.h>
//初始化socket
void Init_net()
{
WSADATA wsaData;
int ret = WSAStartup(MAKEWORD(2, 2),&wsaData);
}
DWORD WINAPI AcceptThread(LPVOID lpvoid);
DWORD WINAPI ReceiveInfo(LPVOID lpvoid);
DWORD WINAPI SendInfo(LPVOID lpvoid);
int main(int argc, char* argv[])
{
Init_net();
int af = AF_INET;
int type = SOCK_STREAM;
int protocol = 0;
SOCKET listensock = socket(af, type, protocol);//创建套接字
SOCKADDR_IN addr;
addr.sin_port=htons(5555);
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=htonl(INADDR_ANY);
int len = sizeof(addr);
int ret = bind(listensock, (LPSOCKADDR)&addr, len);//绑定套接字
ret = listen(listensock, 5);//监听套接
HANDLE h = CreateThread(0, 0, AcceptThread, (LPVOID)&listensock, 0, 0);
WaitForSingleObject(h, INFINITE);//等待结束
CloseHandle(h);
closesocket(listensock);
return 0;
}
//接受连接线程
DWORD WINAPI AcceptThread(LPVOID lpvoid)
{
SOCKET *plistsock = (SOCKET*)lpvoid;
while(1)
{
sockaddr_in addr;
int len = sizeof(addr);
SOCKET clientsock = accept(*plistsock, (LPSOCKADDR)&addr, &len);
HANDLE hr = CreateThread(0, 0, ReceiveInfo, (LPVOID)&clientsock, 0, 0);
HANDLE hs = CreateThread(0, 0, SendInfo, (LPVOID)&clientsock, 0, 0);
}
return 1;
}
//接受数据线程
DWORD WINAPI ReceiveInfo(LPVOID lpvoid)
{
SOCKET *pclisock = (SOCKET*)lpvoid;
while(1)
{
char buf[100];
int l = recv(*pclisock, buf, 100, 0);
if(-1 == l)
{
continue;
}
cout<<buf<<endl;
}
}
//发送数据线程
DWORD WINAPI SendInfo(LPVOID lpvoid)
{
SOCKET *pclisock = (SOCKET*)lpvoid;
while(1)
{
char buf[100];
strcpy(buf, "服务器:");
int len = strlen("服务器:");
gets(buf+len);
send(*pclisock, buf, 100, 0);
}
}
/////////////////////////////////////////
/////////////////////////////////////////
include "stdafx.h"
#include <Winsock2.h>
#include <iostream.h>
void Init_net()
{
WSADATA wsaData;
int ret = WSAStartup(MAKEWORD(2, 2),&wsaData);
}
DWORD WINAPI SendInfo(LPVOID lpvoid);
DWORD WINAPI ReceiveInfo(LPVOID lpvoid);
int main(int argc, char* argv[])
{
Init_net();
int af = AF_INET;
int type = SOCK_STREAM;
int protocol = 0;
SOCKET clisock = socket(af, type, protocol);//创建套接字
sockaddr_in serv_addr;
serv_addr.sin_family=AF_INET; /* to结构体中的sin_family定义地址族 */
serv_addr.sin_port=htons(5555);
serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); /* 填写IP,并转换成in_addr */
int len = sizeof(serv_addr);
int ret = connect(clisock, (LPSOCKADDR)&serv_addr, len);
if(0 == ret)
{
cout<<"成功连接服务器!"<<endl;
}
HANDLE h = CreateThread(0, 0, SendInfo, (LPVOID)&clisock, 0, 0);
HANDLE hr = CreateThread(0, 0, ReceiveInfo, (LPVOID)&clisock, 0, 0);
WaitForSingleObject(h, INFINITE);
return 0;
}
//发送数据线程
DWORD WINAPI SendInfo(LPVOID lpvoid)
{
SOCKET *pclisock = (SOCKET*)lpvoid;
while(1)
{
char buf[100];
strcpy(buf, "客户端:");
int len = strlen("客户端:");
gets(buf+len);;
int data = send(*pclisock, buf, 100, 0);
}
}
//接受数据线程
DWORD WINAPI ReceiveInfo(LPVOID lpvoid)
{
SOCKET *pclisock = (SOCKET*)lpvoid;
while(1)
{
char buf[100];
int l = recv(*pclisock, buf, 100, 0);
if(l==-1)
{
continue;
}
cout<<buf<<endl;
}
}