⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tksender.cc

📁 这是P2P流媒体方案-NICE的实现源码
💻 CC
字号:
#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <fstream.h>#include <string>#include <sys/socket.h>#include "coop-agent.h"ofstream out;int pkt_cnt = 1;string getLine(int sock) {  string ret;  char c;  int recv_len;    while((recv_len = recv(sock, &c, 1, 0)) == 1) {    ret += c;    if(c == '\n')      break;  }  return ret;}string getMsg(int sock) {  string ret, line;  while(1) {    line = getLine(sock);    ret += line;    if(line == "EOL\n")      break;  }  return ret;}void* thread_start(void* arg) {  coopAgent* agent = (coopAgent*)arg;  agent->start();  return NULL;}int main(int argc, char ** argv) {    if (argc != 5) {    printf("usage: %s < listen port > < agent id > < port num > < bse host name >\n", argv[0]);    exit(0);  }  pthread_t thread;  coopAgent mycoop;  struct sockaddr_in my_addr, from_addr;  int sock, clnt_sock;  unsigned int from_addr_len;  out.open("sender.txt", ios::out);  if(out.fail()) {    cout<<"couldn't open file for writing"<<endl;    exit(0);  }  mycoop.init(atoi(argv[2]),0,atoi(argv[3]), argv[4]);  mycoop.add_listening_fd(mycoop.udp_sock, NULL);  initTimeout();  pthread_create(&thread, NULL, thread_start, &mycoop);  printf("my coop started\n");    if((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {    printf("error creating socket\n");    exit(0);  }  memset(&my_addr, 0, sizeof(my_addr));  my_addr.sin_family = AF_INET;  my_addr.sin_addr.s_addr = htonl(INADDR_ANY);  my_addr.sin_port = htons(atoi(argv[1]));  if(bind(sock, (struct sockaddr*)&my_addr, sizeof(my_addr)) < 0) {    printf("error binding socket\n");    exit(0);  }  if(listen(sock, 1) < 0) {    printf("error listening\n");    exit(0);  }  from_addr_len = sizeof(from_addr);  memset(&from_addr, 0, from_addr_len);  printf("waiting for data connection...\n");  if((clnt_sock = accept(sock, (struct sockaddr*)&from_addr, &from_addr_len)) < 0) {    printf("error accepting sender\n");    exit(0);  }  printf("Got data connection\n");  while(1) {    string s = getMsg(clnt_sock);    mycoop.specific_send_data_pkt(const_cast<char*>(s.c_str()), s.size());    out << pkt_cnt++ << endl;    out << flush;  }  pthread_join(thread, NULL);  return 0; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -