コード例 #1
0
void CHttpSocket::StartWork(void)
{
	int ret;

	if (!m_inited) {
		return;
	}

	m_tid = new pthread_t[m_worker]();
	if (!m_tid) {
		cout << pthread_self() << ": new tid array failed" << endl;
		return;
	}

	NonBlockConnect();
	if (m_run) {
		signal(SIGPIPE, SIG_IGN);
		FormatRequestHeader();
		for (int i = 0; i < m_worker; ++i) {
			ret = pthread_create(&m_tid[i], NULL, CHttpSocket::DoWork, (void *)this);
			if (ret != 0) {
				cout << pthread_self() << ": create thread failed:" << strerror(errno) << endl;
				m_run = false;
				return;
			}

			cout << m_tid[i] << " is running" << endl;
		}
	}

	return;
}
コード例 #2
0
ファイル: tcplib.c プロジェクト: marvelliu/lilacsrc
int 
DoConnect(const char *ip, const int port, const int msec)
{
	struct sockaddr_in sa;
	int conn_fd;
	int rv;

	/*assert(ip != NULL && port != 0);*/

	/* 创建 socket */
	if ((conn_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
		return ERR_TCPLIB_OTHERS; /* 创建 socket 失败 */
	/* 设置 sockaddr_in 结构 */
	bzero(&sa, sizeof(sa));
	sa.sin_family = AF_INET;
#ifdef HAVE_INET_ATON
	if (inet_aton(ip, &sa.sin_addr) <= 0)
#else
	if (inet_pton(AF_INET, ip, &sa.sin_addr) <= 0)
#endif
		return ERR_TCPLIB_OTHERS; /* 获取服务器地址失败 */
	sa.sin_port = htons(port);
	/* 创建连接 */
	rv = NonBlockConnect(conn_fd, (struct sockaddr *)&sa, sizeof(sa), msec);
	if (rv < 0)
	{
		/* 创建连接失败,关掉 socket */
		close(conn_fd);
		return rv;
	}

	return conn_fd;
}