SOCKET套接字

server端

SOCKET clientsocket;
HANDLE handleThread;
DWORD WINAPI WinPorc(LPVOID lparam);

void CSocketDlg::OnButton2() //1.创建主Socket
{
 mysocket = socket(AF_INET,SOCK_STREAM,0);
 if (mysocket == INVALID_SOCKET)
 {
  MessageBox(L"MySocket failed");
 }
 else
 {
  MessageBox(L"MySocket Success");
 }
}

void CSocketDlg::OnButtonBind() //2.给主Socket绑定端口信息
{
 sockaddr_in serversocketinfo;
 serversocketinfo.sin_family = AF_INET;
 serversocketinfo.sin_port = htons(PORT1);
 serversocketinfo.sin_addr.s_addr = INADDR_ANY;
 memset(serversocketinfo.sin_zero,0,8);
 if(bind(mysocket,(sockaddr*)&serversocketinfo,sizeof(serversocketinfo))==0)   //强转的参数要加上地址符号&
 {
  MessageBox(L"Bind success");
 }
 else
 {
  MessageBox(L"Bind failed");
 }
}

void CSocketDlg::OnButtonListen() //3.用主Socket开始监听客户端
{
 if(listen(mysocket,10)==0)
 {
  MessageBox(L"Listen Success");
 }
 else
 {
  MessageBox(L"Listen failed");
 }
}


void CSocketDlg::OnButtonAccept() //4.用ClientSocket去等待接收客户端发来的信息
{

 sockaddr_in clientsocketinfo;
 int size;
 size = sizeof(clientsocketinfo);
 clientsocket = accept(mysocket,(sockaddr*)&clientsocketinfo,&size);//阻塞函数
 if (clientsocket == INVALID_SOCKET)
 {
  MessageBox(L"ClientSocket failed");
 }
 else
 {
  MessageBox(L"ClientSocket Success");
 }

 handleThread = CreateThread(NULL,0,WinPorc,NULL,NULL,NULL);


}

DWORD WINAPI WinPorc(LPVOID lparam)
{
 char buf[1024];
 CSocketDlg* p = (CSocketDlg*)AfxGetApp()->GetMainWnd();
 while (1)
 {
  memset(buf,0,1024);
  recv(clientsocket,buf,1024,0);//阻塞函数
  p->m_edit_show += buf;
  AfxGetApp()->GetMainWnd()->SetDlgItemText(IDC_EDIT1,p->m_edit_show);
 }
 return 0;
}

client端

void CClientSocketDlg::OnButtonCreate()
{
 mysocket = socket(AF_INET,SOCK_STREAM,0);
 if (mysocket == INVALID_SOCKET)
 {
  MessageBox(L"Create failed");
 }
 else
 {
  MessageBox(L"Create Success");
 }
 struct hostent* host;
 host = gethostbyname("127.0.0.1");
 sockaddr_in clientsocketinfo;
 clientsocketinfo.sin_addr = *(in_addr*)host->h_addr;
 clientsocketinfo.sin_port = htons(PORT1);
 clientsocketinfo.sin_family = AF_INET;
 memset(clientsocketinfo.sin_zero,0,8);
 if(connect(mysocket,(sockaddr*)&clientsocketinfo,sizeof(clientsocketinfo))==0)
 {
  MessageBox(L"Connect Success");
 }
}


void CClientSocketDlg::OnButtonSend()
{
 UpdateData(TRUE);
 char buf[1024];
 wcstombs(buf,m_edit_val,sizeof(buf));
 send(mysocket,buf,1024,0);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值