#include "server0.h"
#include "stdafx.h" #include <winsock2.h> #include <stdio.h> #include <windows.h> #include <iostream> #pragma comment(lib,"ws2_32.lib") #define LEN 1024 #define OK 1 #define ERROR_R -1 #define FALSE 0 #define TRUE 1 //DWORD WINAPI AnswerThread(LPVOID lparam) //{ // // int err; // char buf[32]=""; // char recvbuf[32]="yes receive!!"; // SOCKET ClientSocket=(SOCKET)(LPVOID)lparam; // // memset(buf, 0, sizeof(buf)); // // err = recv(ClientSocket, buf, sizeof(buf), 0); // send(ClientSocket, recvbuf, strlen(recvbuf), 0); // buf[err]='\0'; // printf("revc: %s\n", buf); // closesocket(ClientSocket); // return OK; //} DWORD WINAPI AnswerThread(LPVOID lparam) { SOCKET ClientSocket = (SOCKET)(LPVOID)lparam; printf("-------------------AnswerThread be called----------------------\n"); int bytesRecv; char sendbuf[32] = ""; char recvbuf[32] = ""; char sendContent[]="start\n";//必须加\n while(1) { bytesRecv = SOCKET_ERROR; for(int i=0; i<(int)strlen(recvbuf); i++) { recvbuf[i] = '\0'; } //接收数据 while(bytesRecv == SOCKET_ERROR) { bytesRecv = recv(ClientSocket, recvbuf, 32, 0); } //发送数据 send(ClientSocket, recvbuf, strlen(recvbuf), 0);//client三个都能收到 send(ClientSocket, recvbuf, strlen(recvbuf), 0); send(ClientSocket, sendContent, strlen(sendContent), 0); printf("%s\n", recvbuf); printf("%d\n", ClientSocket); } return 0; } int main(int argc, char* argv[]) { //初始化WINSOCKET WSADATA wsaData; int iRet = WSAStartup(MAKEWORD(2, 2), &wsaData); if(iRet != NO_ERROR) printf("Error at WSAStartup()\n"); //创建一个Socket SOCKET m_socket; m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(m_socket == INVALID_SOCKET) { printf("Error at socket():%ld\n", WSAGetLastError()); WSACleanup(); return 0; } //绑定socket sockaddr_in service; service.sin_family = AF_INET; service.sin_addr.s_addr = inet_addr("127.0.0.1"); service.sin_port = htons(8383); if(bind(m_socket, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR) { printf("bind() failed.\n"); closesocket(m_socket); return 0; } else printf("bind OK.\n"); //在socket上侦听 if(listen(m_socket, 20) == SOCKET_ERROR) printf("Error listening on socket.\n"); else printf("Listening ok.\n"); SOCKET AcceptSocket; printf("Waiting for a client to connect...\n"); while(1) { AcceptSocket = SOCKET_ERROR; while(AcceptSocket == SOCKET_ERROR) { AcceptSocket = accept(m_socket, NULL, NULL); } printf("Client Connected.\n"); DWORD dwThreadId; HANDLE hThread; hThread = CreateThread(NULL, NULL, AnswerThread, (LPVOID)AcceptSocket, 0, &dwThreadId); if(hThread == NULL) { printf("CreatThread AnswerThread() failed.\n"); } else { printf("CreateThread OK.\n"); } } return 0; }
-------------------------------------------------------------------------------------------
===========================================================================================
-------------------------------------------------------------------------------------------
local socket = require("socket") client = socket.connect("127.0.0.1", 8383) client:send("send: client word 111\n") while true do s= client:receive("*l") if s~=nil then print(s) break end end --client:close() --client2 = socket.connect("127.0.0.1", 8383) --client2:send("send: client word 222\n") while true do s= client:receive("*l") --*a不行会卡死 if s~=nil then print(s) break end end --client2:close() --client3 = socket.connect("127.0.0.1", 8383) --client3:send("send: client word 333\n") while true do s= client:receive("*l") if s~=nil then print(s) break end end client:close()