64,636
社区成员
发帖
与我相关
我的任务
分享
/*************************************************************************
> File Name: server.c
> Author: zxx
> Mail: zxx178239@163.com
> Created Time: Mon 23 Nov 2015 07:22:04 PM CST
************************************************************************/
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
int main(int argc, char *argv[])
{
int fd_listen, fd_client;
char port[64] = "";
char ip[64] = "";
fd_listen = socket(AF_INET, SOCK_STREAM, 0);
if(fd_listen == -1)
{
perror("socket");
exit(1);
}
if(argc < 3)
{
printf("argc error!");
exit(1);
}
struct sockaddr_in seraddr, clientaddr;
memset(&seraddr, 0, sizeof(seraddr));
seraddr.sin_family = AF_INET;
seraddr.sin_port = htons(atoi(argv[2]));
seraddr.sin_addr.s_addr = inet_addr(argv[1]);
if(bind(fd_listen, (struct sockaddr *)&seraddr, 16) == -1)
{
perror("bind");
exit(1);
}
if(listen(fd_listen, 10) == -1)
{
perror("listen");
exit(1);
}
memset(&clientaddr, 0, sizeof(clientaddr));
socklen_t len = sizeof(clientaddr);
printf("wait accept\n");
fd_client = accept(fd_listen, (struct sockaddr *)&clientaddr, &len);
printf("accept success!\n");
if(fd_client == -1)
{
perror("accept");
exit(1);
}
printf("%s : %d\n", inet_ntoa(clientaddr.sin_addr), ntohs(clientaddr.sin_port));
char buf[100] = "";
recv(fd_client, buf, 100, 0);
printf("recv from client: %s\n", buf);
send(fd_client, "hello", 6, 0);
close(fd_client);
close(fd_listen);
}
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32")
int main(int argc, char *argv[])
{
WSADATA wsadata;
struct sockaddr_in sin;
SOCKET clientsock;
char buf[50] = "";
if (argc < 3)
{
printf("argc error!\n");
exit(1);
}
if (WSAStartup(MAKEWORD(2, 2), &wsadata) != 0)
{
printf("start error!\n");
exit(1);
}
clientsock = socket(AF_INET, SOCK_STREAM, 0);
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(atoi(argv[2]));
sin.sin_addr.s_addr = inet_addr(argv[1]);
printf("socket ok!\n");
connect(clientsock, (struct sockaddr *)&sin, sizeof(sin));
printf("connect ok!\n");
send(clientsock, "hello world", 12, 0);
recv(clientsock, buf, 50, 0);
closesocket(clientsock);
WSACleanup();
}