| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2643 人关注过本帖
标题:《UNIX网络编程》时间获取客户端/服务器程序,WIN/MAC下运行
只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
结帖率:94.72%
收藏
已结贴  问题点数:8 回复次数:7 
《UNIX网络编程》时间获取客户端/服务器程序,WIN/MAC下运行
// client
#include <winsock2.h>
#include <stdio.h>
int main()
{
    WSAData wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
   
    int sockfd, n;
    char recvline[1024];
    struct sockaddr_in servaddr;
   
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
   
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(13);
    struct hostent *host_entry = gethostbyname("localhost");
    servaddr.sin_addr.s_addr = *(unsigned long*) host_entry->h_addr;
   
    int c = connect(sockfd, (sockaddr*)&servaddr, sizeof(servaddr));
   
    while ((n = recv(sockfd, recvline, 1024, 0)) > 0)
    {
        recvline[n] = 0;
        fputs(recvline, stdout);
    }
   
    getchar();
    return 0;
}
// server
#include <winsock2.h>
#include <stdio.h>
#include <time.h>
int main()
{
    WSAData wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
   
    int listenfd, connfd;
    struct sockaddr_in servaddr;
    char buff[1024];
    time_t ticks;
   
    listenfd = socket(AF_INET, SOCK_STREAM, 0);
   
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(13);
    servaddr.sin_addr.s_addr = INADDR_ANY;
   
    bind(listenfd, (sockaddr*)&servaddr, sizeof(servaddr));
   
    listen(listenfd, 5);
   
    for (;;)
    {
        connfd = accept(listenfd, 0, 0);
        ticks = time(NULL);
        sprintf(buff, "%.24s\r\n", ctime(&ticks));
        send(connfd, buff, strlen(buff), 0);
    }
   
    getchar();
    return 0;
}
// MAC client
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
    int sockfd, n;
    char recvline[1024];
    struct sockaddr_in servaddr;
   
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
   
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(7650);
    struct hostent *host_entry = gethostbyname("localhost");
    servaddr.sin_addr.s_addr = *(unsigned long*) host_entry->h_addr;
   
    int c = connect(sockfd, (sockaddr*)&servaddr, sizeof(servaddr));
   
    while ((n = recv(sockfd, recvline, 1024, 0)) > 0)
    {
        recvline[n] = 0;
        fputs(recvline, stdout);
    }
   
    getchar();
    return 0;
}
// MAC server
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <time.h>
#include <string.h>
int main(int argc, char *argv[])
{
    int listenfd, connfd;
    struct sockaddr_in servaddr;
    char buff[1024];
    time_t ticks;
   
    listenfd = socket(AF_INET, SOCK_STREAM, 0);
   
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(7650);
    servaddr.sin_addr.s_addr = INADDR_ANY;
   
    bind(listenfd, (sockaddr*)&servaddr, sizeof(servaddr));
   
    listen(listenfd, 5);
   
    for (;;)
    {
        connfd = accept(listenfd, 0, 0);
        ticks = time(NULL);
        sprintf(buff, "%.24s\r\n", ctime(&ticks));
        send(connfd, buff, strlen(buff), 0);
    }
   
    getchar();
    return 0;
}

[此贴子已经被作者于2015-12-18 11:39编辑过]

搜索更多相关主题的帖子: 客户端 服务器 include 网络编程 localhost 客户端 服务器 include 网络编程 localhost 
2015-12-18 01:00
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:4 
好久不见。不过我现在很纠结,不知道是该跟你寒暄两句,还是骂你的代码。

你们家UNIX编程居然用winsock2.h头文件?要不要来几个*_s函数?看见客户端代码写这个也就算了,服务器端也是,你说我该怎么想?

除了概念唬人外没什么技术含量,尤其结尾那个gethar()更是暴露了业余的程度。

你的游戏到底准备的怎么样了?怎么到现在还在抠这点基础技术?


重剑无锋,大巧不工
2015-12-18 22:39
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 2楼 beyondyf
我基础一直不扎实

我就是真命天子,顺我者生,逆我者死!
2015-12-19 00:11
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
我写的代码确实很基础,事实上很多游戏的客户端/服务器的网络代码都很基础。
我之前没怎么写过网络程序,都是用的公司现有的代码,尽管如此,我对网络编程还是相当了解的。
最近想把网络编程的细节学习的更透彻一点。然后,我习惯在windows下编程,所以用的winsock.h。
但是,我用的教程是《UNIX网络编程》,我只是在原书代码的开头加了一句 WSAStartup简单的实现了跨平台而已。
我觉得有些代码对那些使用windows编程的同学可能有点帮助,所以就帖出来跟大家分享一下。
那个getchar()是我修改代码的时候忘了删除了,具体你可以看我上一个帖子。
这段代码只是一个实验性的代码,之后,我写的代码将不会在UNIX下运行,不会再包含UNIX头文件。

我那个游戏进度非常缓慢,我平时也是在给别人打工,基本没什么业余时间学习和编码。
另外,你的算法那么好,技术那么好,不在软件行业做一番事业真的太可惜了。

[此贴子已经被作者于2015-12-19 09:34编辑过]


我就是真命天子,顺我者生,逆我者死!
2015-12-19 00:26
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:4 
我只会用控件做
就直接说《网络编程》时间获取客户端/服务器程序嘛,反正都知道tcp/ip最初就是在unix平台上实现的,现在还有谁在用unix呢?大概只有美国军方或大型金融证券公司吧。

能编个毛线衣吗?
2015-12-19 09:49
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 5楼 wmf2014
远比大家想象中的多。可以说如果是专业搞计算机的却不懂unix那他是在耍流氓。

我们单位除了收发文件等办公用的电脑外,其他都是solaris。android手机底层是个linux系统。苹果手机以及苹果电脑的操作系统全都是类UNIX操作系统。各大网站几乎都是UNIX(严谨点还是说类UNIX吧)。当然微软用的是它自己的系统。

windows系统只在我们看得见的地方,而我们看不见的地方几乎全是UNIX的天下。

重剑无锋,大巧不工
2015-12-19 20:53
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 5楼 wmf2014
用控件怎么做?能不能指教一下?

我就是真命天子,顺我者生,逆我者死!
2015-12-20 08:24
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
回复 4楼 BlueGuy
大概是什么样子的?

[此贴子已经被作者于2016-1-30 17:46编辑过]


仰望星空...........不忘初心!
2016-01-30 17:27
快速回复:《UNIX网络编程》时间获取客户端/服务器程序,WIN/MAC下运行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016776 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved