1. c语言的文件管理器建立于SOCKET TCP通信
C语言没有SOCKET,必须调用操作系统API,用windows或linux提供的。结构应该设计成这样,所有的功能都在server,客户端只提供界面,客户端选择好功能,输入,密码,账号后,把这些资料通过socket的传到服务器,服务器通过验证后,把你要的东西通过SOCKET返回
我给你说思路吧,如果你还不会写,那没办法,要用到的东西就是socket和dir目录操作,还有一些linux的shell命令。
客户机密码验证后,输入一条shell命令,打包成消息发给服务器,服务器得到消息,拆出消息中的命令,实现操作,把结果定向输入到一个文件,然后通过读取,把文件的内容反回给客户端。大致是这样。不要想着别人给你框架,你只要在里面填一点东西,这样对你学习没有帮助的。
2. 怎么用C语言的socket测试两个主机之间的TCP传输速度
电脑上通常有个echo端口,向这个端口发送什么数据,此端口就回应什么数据。
你可以从A机器向B机器的echo端口(端口号=7)发起TCP连接,连接成功后,发送少量数据,并接收对端回送的数据。A机器通过计算数据一去一回的时间差,判断出网速。
此办法适用于精度要求不高的场合。
3. 请问用C语言 socket编程,如何使TCP客户端实现网络恢复后自动重连的功能
建议你去我的空间博客中看一下关于socket连接过程,你会明白为什么连接不了,因为accept后返回的socket是系统随机分配的。TCP指的点对点,其实就是socket对socket。
4. 用c语言写个 socket tcp 的
#include <winsock2.h>
#include <stdio.h>
#include <pthread.h>
#pragma comment(lib,"ws2_32.lib")
typedef struct{
SOCKET accpt;
int lock;
}Arg;
void *transfer(void *arg)
{
Arg * info = (Arg *)arg;
SOCKET clientSock;
char recvbuf[102];
char sendBuf[] = "10";
int ret;
memcpy(&clientSock,(void*)&info->accpt,sizeof(clientSock));
info->lock =1;
while (TRUE)
{
ret = send(clientSock,sendBuf,2,0);
if (ret == -1)
{
break;
}
ret = recv(clientSock,recvbuf,102,0);
printf("%s ",recvbuf);
}
return (void *)0;
}
void* timer(void *arg)
{
time_t last = time(NULL);
time_t now;
int i = 20;
while(i--)
{
now = time(NULL);
if(now - last == 1)
{
printf("1s past! ");
last = now;
}
Sleep(500);
}
printf("timer exit. ");
return (void *)0;
}
int main(void) {
WSADATA wsaData;
SOCKET ListenSocket;
SOCKADDR_IN service,client;
int len = sizeof(client);
Arg argument;
pthread_t tid;
char sendBuf[] = "ID=2;WHAT=host";
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR) {
printf("Error at WSAStartup() ");
return 1;
}
ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSocket == INVALID_SOCKET) {
printf("Error at socket(): %ld ", WSAGetLastError());
WSACleanup();
return 1;
}
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("127.0.0.1");
service.sin_port = htons(27115);
if (bind( ListenSocket,
(SOCKADDR*) &service,
sizeof(service)) == SOCKET_ERROR) {
printf("bind() failed. ");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
if (listen( ListenSocket, 1 ) == SOCKET_ERROR) {
printf("Error listening on socket. ");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
argument.lock = 1;
printf("Waiting for client to connect... ");
pthread_create(&tid,NULL,timer,NULL);
while(TRUE){
argument.accpt = accept( ListenSocket, (SOCKADDR*)&client, &len );
if (argument.accpt == INVALID_SOCKET) {
printf("accept failed: %d ", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
} else {
printf("accept%s:%d ",inet_ntoa(client.sin_addr),client.sin_port);
while (!argument.lock);
argument.lock = 0;
// sendto(argument.accpt,sendBuf,sizeof(sendBuf),0,(SOCKADDR*)&client,len);
pthread_create(&tid,NULL,transfer,&argument);
//send(AcceptSocket,sendBuf,sizeof(sendBuf),0);
}
}
// No longer need server socket
closesocket(ListenSocket);
WSACleanup();
return 0;
}
发送数据格式按需求。可以发送字符串,也可以发送结构体。如果发送结构体的话,要注意序列化和反序列化。程序例子是服务器对每个客户端的connect动作起一个线程去交互。还有一个线程是定时器。
5. 在linux系统中用c语言编写一个网络tcp主从通信的socket程序,要求发送数据包
没有你想象的那么复杂,其实监听端口,然后read或者write就够了。
6. 怎样用C语言做socket网络编程
mfc只是对socket进行了一些封装,大部分人做网络编程都是用的原始的socket,比如如下接口都可以在c下进行调用
1.socket()
2.bind()
3.connect()
4.listen()
5.accept()
6.send() 和recv()
7.sendto() 和recvfrom()
8.close() 和shutdown()
9.getpeername()
10.gethostname()
这些接口是在Winsock2.h中定义的不是在mfc中定义的,你只需要包含Winsock2.h头文件和Ws2_32.lib库就可以了。
7. 我想了解下 TCP c语言编码 还有socket编码
这是个标准的SOCKET客户端代码
你哪里不会了?难道要一行一行的注释?
我给你简单解释一下SOCKET编程的模型吧:
服务器 socket 函数 返回 描述符 fd
bind fd到相关的ip地址和端口
listen
最后accept 阻塞 等待客户端的链接
客户端 client
socket 函数 返回描述符 fd
直接 connect 到固定ip地址和端口的 服务器
当connect的服务器正在accpet 那么
服务器accept会返回一个 fd
这个时候 服务器就可以通过这个fd和客户端进行通信
客户端connnect成功后,就可以通过自己的fd和服务器进行通信
上面是一个标准的socket通信模型
如果看懂了 那就好
否则你要先弄清楚这个 才能看懂代码 而不是让别人一句一句告诉你
8. Windows系统用C语言写TCP通信
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
typedef struct{
SOCKET accpt;
int lock;
}Arg;
void *transfer(void *arg)
{
Arg * info = (Arg *)arg;
SOCKET clientSock;
char recvbuf[102];
char sendBuf[] = "10";
int ret;
memcpy(&clientSock,(void*)&info->accpt,sizeof(clientSock));
info->lock =1;
while (TRUE)
{
ret = send(clientSock,sendBuf,2,0);
if (ret == -1)
{
break;
}
ret = recv(clientSock,recvbuf,102,0);
printf("%s\n",recvbuf);
}
return (void *)0;
}
void* timer(void *arg)
{
time_t last = time(NULL);
time_t now;
int i = 20;
while(i--)
{
now = time(NULL);
if(now - last == 1)
{
printf("1s past!\n");
last = now;
}
Sleep(500);
}
printf("timer exit.\n");
return (void *)0;
}
int main(void) {
WSADATA wsaData;
SOCKET ListenSocket;
SOCKADDR_IN service,client;
int len = sizeof(client);
Arg argument;
pthread_t tid;
char sendBuf[] = "ID=2;WHAT=host";
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR) {
printf("Error at WSAStartup()\n");
return 1;
}
ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSocket == INVALID_SOCKET) {
printf("Error at socket(): %ld\n", WSAGetLastError());
WSACleanup();
return 1;
}
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("127.0.0.1");
service.sin_port = htons(27115);
if (bind( ListenSocket,
(SOCKADDR*) &service,
sizeof(service)) == SOCKET_ERROR) {
printf("bind() failed.\n");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
if (listen( ListenSocket, 1 ) == SOCKET_ERROR) {
printf("Error listening on socket.\n");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
argument.lock = 1;
printf("Waiting for client to connect...\n");
pthread_create(&tid,NULL,timer,NULL);
while(TRUE){
argument.accpt = accept( ListenSocket, (SOCKADDR*)&client, &len );
if (argument.accpt == INVALID_SOCKET) {
printf("accept failed: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
} else {
printf("accept%s:%d\n",inet_ntoa(client.sin_addr),client.sin_port);
while (!argument.lock);
argument.lock = 0;
// sendto(argument.accpt,sendBuf,sizeof(sendBuf),0,(SOCKADDR*)&client,len);
pthread_create(&tid,NULL,transfer,&argument);
//send(AcceptSocket,sendBuf,sizeof(sendBuf),0);
}
}
// No longer need server socket
closesocket(ListenSocket);
WSACleanup();
return 0;
}
9. C语言实现socket编程TCP通信的问题
我做试验,发现是如果你这样写:
char sendbuf[1024] = {"123456\n"};
也就是发送数据加上了换行,服务端立即显示了。看来不加换行就被缓存了(应该是被服务端收到但缓存了)。
10. 有人能够搞一个c语言下的socket编程的代码,就只要实现tcp的连接就行了
留个邮箱,我发给你,client server端都有,vc++6.0工程。