VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 653|回复: 1

哪位大哥帮忙把这个程序移植到linux上

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-9 09:30:01 | 显示全部楼层 |阅读模式
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<winsock.h>
#pragma comment(lib, "ws2_32.lib")

void main()//(int argc, char *argv[])
{
        /*//tranclate arguments
        //////////////////////////////////////////////
        char *_port;
        char *address;
        char *path;
        u_short port;
        if(argc==3)
        {
                _port=argv[1];
                sscanf(_port,"%d",&port);
                printf("%d",port);
                scanf("%s");
                address=argv[2];
                path=argv[3];
        }*/

        //Init a winsock
        //////////////////////////////////////////////
        int err;
        WSADATA wsaData;
        WORD m_wVersion=MAKEWORD(2,2);
        if(err=WSAStartup(m_wVersion,&wsaData)!=0)
        {
                printf("Winsock Init Error.");
                int err_WSA=WSAGetLastError();
                printf("%d\n",err_WSA);
        }

        //Creat a socket
        ///////////////////////////////////////////////
        int server_socket;
        server_socket=socket(AF_INET,SOCK_STREAM,0);
        if(server_socket==INVALID_SOCKET)
        {
                int err_sock=WSAGetLastError();
                printf("Creat Socket Error! %d\n",err_sock);
        }

        //Bind Server
        ///////////////////////////////////////////////
        struct sockaddr_in server;
        server.sin_family=AF_INET;
        server.sin_port=htons(2000);
        //The Windows Sockets htons function converts a u_short
        //from host to TCP/IP network byte order (which is big-endian).
        //server.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
        server.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");


        if(bind(server_socket,(const sockaddr *)&server,sizeof(server))==SOCKET_ERROR)
        {
                int err_bind=WSAGetLastError();
                printf(" Bind Socket Error! %d\n",err_bind);
        }

        if(listen(server_socket,2)==SOCKET_ERROR)
        {
                int err_listen=WSAGetLastError();
                printf("Listen Socket Error! %d\n",err_listen);
        }

        struct sockaddr_in client_address;
        int client_len;
        char *buff=(char*)malloc(1024);
        int client_socket;
        int readbytes;
        int sendbytes;
       
        FILE *stream;
        if((stream=fopen("17 - Ono Lisa - Yesterday.mp3", "a+b" ))==NULL)
        {
                int err_fopen=WSAGetLastError();
                printf("Open file Error! %d",err_fopen);
        }

        while(1)
        {
                client_len=sizeof(client_address);
                if((client_socket=accept(server_socket,(struct sockaddr *)&client_address,&client_len))==INVALID_SOCKET)
                {
                        int err_acc=WSAGetLastError();
                        printf("accept Error! %d\n",err_acc);
                }
       
                        while((readbytes=fread(buff,1,1024,stream))>0)
                        {
                                sendbytes=send(client_socket,buff,readbytes,0);
                                if(sendbytes>=0)
                                        printf("send %d bytes      ",sendbytes);
                                else
                                        printf("Send Data Error!");
                        }
                printf("%d",readbytes);
                closesocket(client_socket);
        }       
}





       
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-4-10 05:00:01 | 显示全部楼层
去掉带有WSA的东西。
加些头文件
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>

去掉
#include<windows.h>
#include<winsock.h>
#pragma comment(lib, "ws2_32.lib")

....没准还缺什么sys/types.h unistd.h 之类...剩下的自己调吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表