3,881
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include<WINSOCK2.H>
#pragma comment(lib,"ws2_32.lib")
#define PORT 3995
#define REMOTE_IP "163.1.8.128"
int main(int argc,char *argv[])
{
int s ,iRcv=0;
struct sockaddr_in addr ;
char mybuffer[1024];
WSADATA wsaData = {0};
if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
printf("WSAStartup failed.\n");
exit(-1);
}
if( (s=socket(AF_INET,SOCK_STREAM,0))<0 ) /*建立一个socket。*/
{
perror("socket");
printf("socket err [%d][%d]\n", s, WSAGetLastError());
exit(1);
}
else
{
printf("socket created .\n");
printf("socked id: %d \n",s);
}
memset(&addr, 0, sizeof(addr)); /*设置addr的信息。*/
addr.sin_family =AF_INET;
addr.sin_port=htons(PORT);
addr.sin_addr.s_addr=inet_addr(REMOTE_IP);
if(connect(s,&addr,sizeof(addr))<0) /*连接到远程服务器。*/
{
perror("connect");
printf("socket err [%d][%d]\n", s, WSAGetLastError());
close(s);
exit(1);
}
else /*输出信息。*/
{
printf("connected ok!\n");
printf("remote ip:%s\n",REMOTE_IP);
printf("remote port:%d\n",PORT);
}
strcpy(mybuffer, "0001AINQ0222000100000000000000000000000O0619161641000028021 030000005000100000000000021000000 62135600104000018008113EA0");
if(-1 == send(s, mybuffer, strlen(mybuffer), 0))
{
printf("send err!!!\n");
close(s);
exit(-1);
}
printf("send ok \n");
if(-1 == (iRcv = recv(s, mybuffer, sizeof(mybuffer), 0)))
{
printf("recv err!!!\n");
close(s);
exit(-1);
}
else
{
printf("[%d]收到消息: [%d][%s]\n", getpid(), iRcv, mybuffer);
}
getch();
close(s);
return 0;
}
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <signal.h>
#include <time.h>
#define IPADDR "127.0.0.1"
#define PORT 3995
#define MAX 10
int main()
{
int iSocket, iSocket2, iRet, iAddrLen;
int iRcv=0;
char szBuf[2048];
struct sockaddr_in stAddr;
const int reuse = 1;
struct tm *ptr;
time_t loctime;
signal(SIGCLD,SIG_IGN);
if((iSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("socket err!\n");
exit(-1);
}
else
{
printf("socket created .\n");
printf("socked id: %d \n",iSocket);
}
if(iRet = setsockopt(iSocket, SOL_SOCKET, SO_REUSEADDR, (const char*)&reuse, sizeof(reuse)))
{
printf("setsockopt err![%d][%d]\n", iRet, errno);
close(iSocket);
exit(-1);
}
memset(&stAddr, 0, sizeof(stAddr));
stAddr.sin_family =AF_INET;
stAddr.sin_port = htons(PORT);
stAddr.sin_addr.s_addr = htonl(INADDR_ANY);
if((iRet = bind(iSocket, &stAddr, sizeof(stAddr))) < 0)
{
printf("bind err![%d][%d]\n", iRet, errno);
close(iSocket);
exit(-1);
}
else
{
printf("connected.\n");
printf("local port:%d\n",PORT) ;
}
if((iRet = listen(iSocket, 3)) < 0)
{
printf("listen err![%d]\n", iRet);
goto ERR;
}
else
{
printf("listening...\n");
}
iAddrLen = sizeof(stAddr);
while(1)
{
if((iSocket2 = accept(iSocket, &stAddr, &iAddrLen)) < 0)
{
printf("accept err![%d][%d][%s]\n", iSocket2, errno, strerror(errno));
goto ERR;
}
else
{
loctime=time(NULL);
ptr=localtime(&loctime);
printf(asctime(ptr));
printf("[%d]accept a new connection:%d[%s]\n", getpid(), iSocket2, inet_ntoa(stAddr.sin_addr));
}
if((iRet = fork()) < 0)
{
printf("fork err! \n");
goto ERR;
}
else if(iRet > 0)
{
// printf("Let Son To Recieve It,I Continue To accept\n");
close(iSocket2);
continue;
}
memset(szBuf, 0, sizeof(szBuf));
if(-1 == (iRcv = recv(iSocket2, szBuf, sizeof(szBuf), 0)))
{
printf("recv err!!![%d][%s]\n", errno, strerror(errno));
goto ERR;
}
else
{
loctime=time(NULL);
ptr=localtime(&loctime);
printf(asctime(ptr));
printf("[%d]收到消息: [%d][%s]\n", getpid(), iRcv, szBuf);
}
memset(szBuf, 0, sizeof(szBuf));
strcpy(szBuf, "快点好吧,受不了啦");
if(-1 == send(iSocket2, szBuf, strlen(szBuf), 0))
{
printf("send err!!!\n");
goto ERR;
}
else
{
printf("send OK\n");
}
goto END;
}
ERR:
close(iSocket);
close(iSocket2);
printf("server ERR\n");
return -123;
END:
close(iSocket);
close(iSocket2);
printf("goto END\n");
return 0;
}