socket编程 c语言?java socket 编程
大家好,感谢邀请,今天来为大家分享一下socket编程 c语言的问题,以及和java socket 编程的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
C语言socket编程要怎么实现服务器可以发消息给客户端
先要理解socket是什么?
简单的说socket是一个全双工的通信通道,
即使用TCP或者UDP通信时均可以在发送消息的同时接受消息,
它不区分是否是服务器。
根据这个概念你的问题就很好回答。
》当客户端与服务器连接后。有什么方法使服务器可以随时随地发消息给客户端?
》我现在只能。客户端发个消息给服务器。服务器才能发个消息给客户端。也就是说客户端不发消息。服务器就没法发消息给客户端。
》求大牛给个思路。当连接后。客户端与服务器双方可以随时随地通信!
使用多线程,一个维持接受逻辑,一个维持送信逻辑,即可完成同时接受及发送。
客户端及服务器端均做上述设置。
而你的做法是在一个线程中执行接受与送信,因此只能按照顺序逻辑完成接收与送信。
关键点是多线程。
计算机网络socket linux下用c或c++写
我这有一段最简单的SOCKET连接服务端的~!前阵子装Ubuntu 10后写着实验用的,这是最基本的TCP服务端框架。各种函数的条用跟 WINDOWS下的一样(我说的WINDOWS下可不是MFC喔~!)客户端自己琢磨,不懂的话再发你~!至于你要的细节,我感觉还是自己写的好
人不能太懒~!必须深入认识否则你领略不到 C程序设计的精髓~!
//////////代码如下//////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
///////////////////////// H*F*W 2010.05.21 In GuangZhou///////////////////////////
///////////////////////// LINUX SOCKET实验最简单服务端///////////////////////////
/////////////////////// linux编程 SOCKET,GTK有共同兴趣的朋友+我 Q: 176469428////////
#include<stdio.h>
#include<string.h>
#include<sys/socket.h>
#include<netinet/in.h>
int Hlisten(unsigned short hport)
{
int hsock,rhsock,cc,alen,ret;
struct sockaddr_in hlsock;
char hbuf[65535];
if((hsock=socket(AF_INET,SOCK_STREAM,0))==-1){printf("Error in socket()\n");return 0;}//建立套接字
memset(&hlsock,0,sizeof(hlsock));//初始化SOCKET空间
hlsock.sin_family=AF_INET;
hlsock.sin_port=htons(hport);///监听端口
hlsock.sin_addr.s_addr=htonl(INADDR_ANY);///地址族
ret=1;
setsockopt(hsock,SOL_SOCKET,SO_REUSEADDR,&ret,sizeof(ret));
if(bind(hsock,(struct sockaddr*)&hlsock,sizeof(hlsock))==-1){printf("Error in bind()\n");return 0;}//帮定
if(listen(hsock,0)==-1){printf("Error in listen()\n");return 0;}///进入监听状态
alen=sizeof(hlsock);
rhsock=accept(hsock,(struct sockaddr*)&hlsock,&alen);///接受客户端接入
while(1)
{
memset(hbuf,0,sizeof(hbuf));
cc=recv(rhsock,hbuf,sizeof(hbuf),0);///等待接收数据
if(cc==-1)break;
printf("%s",hbuf);///显示接收内容
}
close(hsock);//关闭连接
return 0;
}
int main(int argc,char*argv[])
{
//if(argc<=1){printf("usge: [port]");return 0;}
Hlisten(330);//调用监听过程传入监听端口
return 0;
}
///////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
//////////////////使用gcc编译直接就可以看到效果////////////////
/////////////////////////////////////////////////////////////////
linux下C语言用socket网络编程怎么计算传输速度
这要你的通信程序协商一个协议,比如定义一个通信结构体,传文件的时候,一开始发送结构体的信息过去,告诉对端你的文件总大小,然后,传输过程中,统计已经收到或者发送的数据,做个除法就得到速率了。
具体这类协商,你可以自己随便想,也可以借鉴现有的比较好的一些设计,有些考虑断点续传的技术,还有压缩的,看你代码也不需要考虑吧。
OK,本文到此结束,希望对大家有所帮助。