50,527
社区成员
发帖
与我相关
我的任务
分享
const int BUF_SIZE = 10240;
int nNetTimeout = 1000;//1秒
WSADATA wsd; //WSADATA变量
SOCKET sHost; //服务器套接字
SOCKADDR_IN servAddr; //服务器地址
char buf[BUF_SIZE]; //接收数据缓冲区
static char bufRecv[BUF_SIZE];
char log[1024 + 1];
char ip[32 + 1];
cout << (char*)info.c_str() << endl;
char *sendbuf = (char*)info.c_str();
string recvbuf;
int retVal; //返回值
//初始化套结字动态库
if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0)
{
cout << "WSAStartup failed!" << endl;
return recvbuf;
}
//创建套接字
sHost = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == sHost)
{
cout << "socket failed!" << endl;
WSACleanup();//释放套接字资源
return recvbuf;
}
//发送时限
setsockopt(sHost, SOL_SOCKET, SO_SNDTIMEO, (char *)&nNetTimeout, sizeof(int));
//接收时限
setsockopt(sHost, SOL_SOCKET, SO_RCVTIMEO, (char *)&nNetTimeout, sizeof(int));
char hostname[256];
gethostname(hostname, sizeof(hostname));
HOSTENT* host = gethostbyname(hostname);
strcpy_s(ip, inet_ntoa(*(in_addr*)*host->h_addr_list));
//设置服务器地址
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = inet_addr(ip);
servAddr.sin_port = htons((short)8000);
int nServAddlen = sizeof(servAddr);
//连接服务器
retVal = connect(sHost, (LPSOCKADDR)&servAddr, sizeof(servAddr));
if (SOCKET_ERROR == retVal)
{
cout << "connect failed!" << endl;
closesocket(sHost); //关闭套接字
WSACleanup(); //释放套接字资源
recvbuf = "conn err";
return recvbuf;
}
cout << "connect ok!" << endl;
//向服务器发送数据
ZeroMemory(buf, BUF_SIZE);
cout << "send msg is:" << sendbuf << endl;
retVal = send(sHost, sendbuf, strlen(sendbuf), 0);
if (SOCKET_ERROR == retVal)
{
cout << "send failed!" << endl;
closesocket(sHost); //关闭套接字
WSACleanup(); //释放套接字资源
recvbuf = "send err";
return recvbuf;
}
cout << "send ok!" << endl;
ZeroMemory(bufRecv, BUF_SIZE);
retVal = recv(sHost, bufRecv, BUF_SIZE, 0);
if (retVal < 0)
{
cout << "recv err" << endl;
}
//退出
closesocket(sHost); //关闭套接字
WSACleanup(); //释放套接字资源
recvbuf = bufRecv;
cout << "recv msg is " << bufRecv << endl;
return recvbuf;
ServerSocket serversocket = new ServerSocket(8000);
System.out.println("listen 8000");
Socket socket = serversocket.accept();
System.out.println("have client connect");
InputStream inp = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(inp);
BufferedReader bfr = new BufferedReader(isr);
String info = null;
while ((info = bfr.readLine())!=null) {
System.out.println("recv msg is:"+info);
}
socket.shutdownInput();
OutputStream ots = socket.getOutputStream();
PrintWriter pw = new PrintWriter(ots);
pw.write("ni hao ya!!!!!");
pw.flush();
System.out.println("have send client msg");
pw.close();
ots.close();
bfr.close();
isr.close();
inp.close();
socket.close();
serversocket.close();