社区
C语言
帖子详情
C语言如何实现Socket编程
buyong
2003-07-14 01:30:32
现在欧要做一个用C语言实现客户端和服务器端Socket通信的程序,要求可以在Windows和Unix上运行,现在求教例子程序。(必须是C语言)
...全文
679
15
打赏
收藏
C语言如何实现Socket编程
现在欧要做一个用C语言实现客户端和服务器端Socket通信的程序,要求可以在Windows和Unix上运行,现在求教例子程序。(必须是C语言)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gunsrose
2003-07-15
打赏
举报
回复
up
fixopen
2003-07-15
打赏
举报
回复
Windows 下的 Winsock 对于 BSD 的 Socket 有了很多扩展,但是不利用这些扩展也是可以进行socket编程的。
不过Winsock有两个函数必须使用:WSAStartup, WSACleanup。分别在开始和结束时使用。
在unix下,简单的去掉就行了。
因为不用WSAAsyncSelect和其他的WSA*类的扩展函数,必须把select搞清楚,很好的同步函数呀。
good luck
magic007
2003-07-14
打赏
举报
回复
SORRY,我说成C++实现的了。不过C也类似,进行某种程度的抽象
zteliubin
2003-07-14
打赏
举报
回复
socket编程的书推荐 Richard Stevens《UNIX网络编程:第1卷》
magic007
2003-07-14
打赏
举报
回复
既然是TCP/IP协议,不管是在WINDOWS下还是在UNIX下,都是相通的
应该先熟悉TCP/IP,然后试着在UNIX和WINDOWS平台上编程,找出其不同点和共同点。
编程时把平台相关部分抽象为接口,如果将来要移到UNIX上,重新实现这个接口即可了
shishiXP
2003-07-14
打赏
举报
回复
编得不好,仅作参考
int accefd, sockfd;
sockaddr_in seraddr;
sockaddr_in cliaddr;
int len_cli;
if ( (sockfd = socket (AF_INET, SOCK_STREAM, 0) ) == -1)
{
printf("socket error\n");
out();
}
bzero(&seraddr, sizeof (seraddr) );
seraddr.sin_family = AF_INET;
seraddr.sin_port = htons (MYPORT);
seraddr.sin_addr.s_addr = htonl (INADDR_ANY);
if( bind (sockfd, (sockaddr *)&seraddr, sizeof (seraddr)) == -1)
{
printf ("bind error\n");
out ();
}
if( listen (sockfd,5) == -1)
{
printf ("listen error\n");
out ();
}
len_cli = sizeof(cliaddr);
if ( (accefd = accept (sockfd, (sockaddr *)&cliaddr, &len_cli) ) == -1)
{
printf("accept error\n");
close(sockfd);
exit(-1);
}
close ( accefd );
close ( sockfd );
jy2004
2003-07-14
打赏
举报
回复
找本tcp/ip
zteliubin
2003-07-14
打赏
举报
回复
可以的,除了WSAStartup()
不要用其他WSA函数。
WSAStartup()可以用定义开关#ifdef WIN32.
wonita
2003-07-14
打赏
举报
回复
找本介绍WINDOWS的SOCKET的书看看
buyong
2003-07-14
打赏
举报
回复
或者我改为求教2个程序例子,一个在windows上实现,另一个在Unix上实现。不过那Unix和Window之间的Socket通信怎么做呢?
buyong
2003-07-14
打赏
举报
回复
偶也不太懂,偶老板说用C做,将来可以放在Unix上,就是不要用windows socket.怎么办?
lw549
2003-07-14
打赏
举报
回复
Winsock是windows专用的,怎么能移植到unix上呢?
antijpn
2003-07-14
打赏
举报
回复
Unix里面用的和Windows里面的差别好像大了一点吧?
Unix里面用的是Berkeley Socket,而Windows里面用的是Winsock
Winsock扩展了很多专用函数,例如WSAAsyncSelect,WSAStartup,WSACleanup等等,使用规则和流程也不是很一样。要实现移植恐怕有点困难了
cwanter
2003-07-14
打赏
举报
回复
倒,你听谁说可以跨平台?windows要调用WSAStartup,unix不用。
liuhaibao
2003-07-14
打赏
举报
回复
推荐一本书自己去看,tcp\ip祥解第二卷,上面讲的很详细
C语言
socket编程
指南(讲解+实例)
C语言
socket编程
指南(讲解+实例)
C语言
socket编程
C语言
socket编程
指南。。。。。
C语言
socket编程
指南。。。。。
C语言
socket编程
指南。。。。。
C语言
Socket简单编程指南
C语言
Socket简单编程指南,看完基本会用,包含很详细的函数解析!
c语言
SOCKET编程
指南
c语言
SOCKET编程
指南
c语言
SOCKET编程
指南
C语言
Socket编程
.pdf
C语言
Socket编程
.pdf
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章